C_and_CPP 板


LINE

http://online-judge.uva.es/p/v100/10089.html 稍微翻译一下题目 -------------------------------------------------------------------------- 咖啡杯有三种大小 但最近发现有很大需求包装相同数量的三种杯子 所以 为了赶紧符合要求 ACM 决定要将一些未销售产品包装拆开 重新包装为相同数量的三种杯子, 而且不能有未包装杯子剩下 找出这种组合是否存在 --------------------------------------------------------------------------- 假设有四种包装 (1, 2, 3), (1, 11, 5), (9, 4, 3), (2, 3, 2). (1,11,5) 代表这个包装中第一种咖啡杯 1 个,第二种咖啡杯 11 个,第三种咖啡杯 5 个 刚好找到一解,第一种包装三包 + 第三种包装一包 + 第四种包装两包,如下: 3 * (1,2,3) + (9,4,3) + 2 * (2,3,2) == 16 * (1,1,1) 另外一个范例:假设有四种包装 (1, 3, 3), (1, 11, 5), (9, 4, 3), (2, 3, 2) 但是没有解 请问高手要怎麽解这一题︿︿? 用了高中数学的克拉马法则每次挑三个不同包装去解 答案和范例输入输出一样 可是答案上传到线上判断是错误的 >.<~ 问了好多人,想了很多天还是解不出来...... 错误的程式码如下: #ifndef ONLINE_JUDGE #include <fstream> #endif #include <iostream> using namespace std; bool check(int p, int q) { // 检查分数是否为正数 if(p > 0 && q >= 0) return true; else if(p < 0 && q <= 0) return true; else return false; } int main() { #ifndef ONLINE_JUDGE ifstream cin("ACM10089.txt"); #endif int c, d, d1, d2, d3, i, j, k, n, x, y, z; bool ans; while( cin >> n ) { if(n == 0) break; ans = false; int a[n][3]; //c = n * (n - 1) * (n - 2) / 6; //cout << "c = " << c << endl; for(i = 0; i < n; i++) for(j = 0; j < 3; j++) cin >> a[i][j]; //for(i = 0; i < n; i++, cout << endl) //for(j = 0; j < 3; j++) //cout << a[i][j] << " "; for(i = 0; i < n - 2; i++) // 0-1 { for(j = i + 1; j < n - 1; j++) // 1-2 { for(k = j + 1; k < n; k++) // 2-3 { for(x = 0, d = 0; x < 3; x++) { y = (x + 1 == 3) ? 0 : x + 1; z = (x + 2 > 2) ? x - 1 : x + 2; d += a[i][x] * a[j][y] * a[k][z]; d -= a[k][x] * a[j][y] * a[i][z]; } //cout << "d = " << d << endl; if(d == 0) // 分母不得为零 break; for(x = 0, d1 = 0; x < 3; x++) { y = (x + 1 == 3) ? 0 : x + 1; z = (x + 2 > 2) ? x - 1 : x + 2; d1 += 1 * a[j][y] * a[k][z]; d1 -= a[k][x] * a[j][y] * 1; } //cout << "d1 = " << d1 << endl; if(check(d, d1)== false) break; for(x = 0, d2 = 0; x < 3; x++) { y = (x + 1 == 3) ? 0 : x + 1; z = (x + 2 > 2) ? x - 1 : x + 2; d2 += a[i][x] * 1 * a[k][z]; d2 -= a[k][x] * 1 * a[i][z]; } //cout << "d2 = " << d2 << endl; if(check(d, d2)== false) break; for(x = 0, d3 = 0; x < 3; x++) { y = (x + 1 == 3) ? 0 : x + 1; z = (x + 2 > 2) ? x - 1 : x + 2; d3 += a[i][x] * a[j][y] * 1; d3 -= 1 * a[j][y] * a[i][z]; } //cout << "d3 = " << d3 << endl; if(check(d, d3)== false) break; ans = true; } if(ans) break; } if(ans) break; } if(ans) cout << "Yes" << endl; else cout << "No" << endl; } #ifndef ONLINE_JUDGE system("pause"); #endif return 0; } -- 欢迎大家一起加入Intel Philanthropic Peer-to-Peer Program !!! 这项「英特尔慈善『点对点连线』计画」旨在经由网际网路,把数百万部个人电脑连结 起来,加速研发治疗白血球过多症血癌)的药物,从而把新药上市的需要时间缩短约 一半。对本计画有兴趣者,可以到http://www.grid.org/download/gold/download.htm 网站,下载该程式。 一旦一批资料处理完毕,下次电脑连接上网际网路时,不论经由宽频拨接,电脑便会 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.200.77







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP