博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1013 Counterfeit Dollar
阅读量:4981 次
发布时间:2019-06-12

本文共 1335 字,大约阅读时间需要 4 分钟。

每次做这个题都会wa……TAT

题意:一共12枚硬币,有1个是假的,假的硬币重量跟别的不一样,用一杆天平量三次,给出每次量的方案和结果,问哪个是假币,是重还是轻。

 

解法:如果天平两端相等说明这两端的硬币都是真币,用一个数组记录真币,如果天平不平衡,用一个新数组初始化是0,重的硬币+1,轻的硬币-1,最后统计一下哪个硬币不确定是真币而且重量的绝对值最大。

 

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long longusing namespace std;int main(){ int T; while(~scanf("%d", &T)) { while(T--) { int num[300]; int flag[300] = {0}; for(int i = 'A'; i <= 'L'; i++) num[i] = 0; string s1, s2, s3; for(int j = 0; j < 3; j++) { cin >> s1 >> s2 >> s3; if(s3 == "even") { for(int i = 0; i < s1.size(); i++) { flag[s1[i]] = 1; flag[s2[i]] = 1; } /*for(int i = 'A'; i <= 'L'; i++) cout << num[i] << " "; puts("");*/ } else if(s3 == "up") { for(int i = 0; i < s1.size(); i++) { num[s1[i]]++; num[s2[i]]--; } } else { for(int i = 0; i < s1.size(); i++) { num[s1[i]]--; num[s2[i]]++; } } } int ans = 0, pos = 0; for(int i = 'A'; i <= 'L'; i++) { if(flag[i] == 1) continue; else { if(abs(num[i]) > ans) { ans = abs(num[i]); pos = i; } } } cout << (char)pos << " is the counterfeit coin and it is "; if(num[pos] < 0) puts("light."); else puts("heavy."); } } return 0;}

  

转载于:https://www.cnblogs.com/Apro/p/4582405.html

你可能感兴趣的文章
ZTE U880 查看内部版本号
查看>>
电池设计
查看>>
PHP 底层的运行机制与原理
查看>>
vs环境Microsoft Build Tools 生成工具
查看>>
关于jmeter启动,提示“ 'findstr' 不是内部或外部命令,也不是运行程序” 解决方案...
查看>>
APIO2019简要题解
查看>>
Travel to all Points 【Codechef】
查看>>
将组件拼装使用
查看>>
spring boot 初识实例及问题小结
查看>>
G面经prepare: set difference
查看>>
蓝牙的key event
查看>>
FtpHelper
查看>>
Opportunity的chance of success的赋值逻辑
查看>>
codevs1228 (dfs序+线段树)
查看>>
关于与后端接口对接,自己总结的几个原则
查看>>
webstorm 格式化代码及常用快捷键
查看>>
适配器模式-Adapter(Java实现)
查看>>
安装phpwind报错
查看>>
Python第五章(北理国家精品课 嵩天等)
查看>>
WPF中设置快捷键
查看>>