Poj百练 2692:假币问题 (分类:模拟)
发布日期:2021-06-29 15:52:09 浏览次数:4 分类:技术文章

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

//poj2692假币问题#include 
#include
#include
#include
using namespace std;int n;int status[12]; //每个硬币的状态char lef[3][7], righ[3][7], res[3][7];bool balance(){ for(int i = 0; i < 3; i++){ int rightW = 0, leftW = 0; for(int j = 0; righ[j] != 0 && j < 6; j++) rightW += status[righ[i][j]-'A']; for(int j = 0; left[j] != 0 && j < 6; j++) leftW += status[lef[i][j]-'A']; if(res[i][0] == 'e' && rightW != leftW) return false; if(res[i][0] == 'u' && rightW >= leftW) return false; if(res[i][0] == 'd' && rightW <= leftW) return false; } return true;}int main(){//0表示未遍历,1表示为真,-1表示可能为假且轻,1表示可能为假且重 scanf("%d",&n); char ans[n+2][43]; for(int index = 0; index < n; index++){ memset(status, 0, sizeof(status)); memset(lef, 0, sizeof(lef)); memset(righ, 0, sizeof(righ)); for(int i = 0; i < 3; i++) scanf("%s %s %s", lef[i], righ[i], res[i]); for(int i = 0; i < 12; i++){ //分别假设每个硬币为轻,重,真,依次枚举,如果满足条件则跳出 status[i] = -1; if(balance()){ strcpy(ans[index], "0 is the counterfeit coin and it is light. "); ans[index][0] = 'A'+i; break; } status[i] = 1; if(balance()){ strcpy(ans[index], "0 is the counterfeit coin and it is heavy. "); ans[index][0] = 'A'+i; break; } status[i] = 0; } } for(int i = 0; i < n; i++) printf("%s\n",ans[i]); return 0;}

 

转载地址:https://suprit.blog.csdn.net/article/details/81459447 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SpringBoot实现一个文件上传服务
下一篇:webpack错误记录(不定期更新)

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月07日 01时07分48秒