Uva 340 - Master-Mind Hints
2016-07-28 09:16
393 查看
原文网址:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=829&page=show_problem&problem=276
给出一个正确的序列,每次给出一个猜测序列,问在猜测的序列中,多少数字的位置是正确的(A),有多少数字在正确的序列中出现过但是位置不对的(B)
题解:
先求A,直接遍历。对0-9的每一个数字,它在a中出现的次数和b中出现的次数 的最小值,就是这个数字在正确的序列中出现过的次数,这些最小值加起来也就是A+B,注意输出格式
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=829&page=show_problem&problem=276
给出一个正确的序列,每次给出一个猜测序列,问在猜测的序列中,多少数字的位置是正确的(A),有多少数字在正确的序列中出现过但是位置不对的(B)
题解:
先求A,直接遍历。对0-9的每一个数字,它在a中出现的次数和b中出现的次数 的最小值,就是这个数字在正确的序列中出现过的次数,这些最小值加起来也就是A+B,注意输出格式
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; bool scan(int n,int y[]) { int kase=0; for(int i=0;i<n;++i) { scanf("%d",&y[i]); if(y[i]) { kase=1; } } return kase==1; } int main() { int n,kase=0; while(scanf("%d",&n)==1,n) { int x[1005],y[1005],a[15]={0}; for(int i=0;i<n;++i) { scanf("%d",&x[i]); ++a[x[i]]; } printf("Game %d:\n",++kase); while(scan(n,y)) { int A=0,B=0,b[15]={0}; for(int i=0;i<n;++i) { if(x[i]==y[i]) { ++A; } ++b[y[i]]; } for(int i=0;i<=9;++i) { B+=min(a[i],b[i]); } printf(" (%d,%d)\n",A,B-A); } } return 0; }
相关文章推荐
- 每日安全简讯20160728
- [分享] 来,做一个问卷调查(有抽奖!)
- 实现跨域cookie共享(转载)
- Spark运行流程
- 2016年7月28日纪念一下
- asp.net限时发送手机验证码
- 排序算法的研究
- Linux CAN驱动及测试总结
- 多态和继承举例
- 支付宝前端架构专家梁文森(绝云)与你探讨算法与数据结构
- 【POJ】[2503]Babelfish
- csdn的第一天
- 老菜鸟迈出的第一步——Android调用WebService碰到的种种问题
- switch case实现两个数的算术运算
- 喵星人与汪星人
- 浅谈js中调用函数时加不加括号的问题
- session入库
- 接口(工厂模式&代理模式)
- OpenFire4.0.1 Smack4.1.6服务器客户端环境搭建
- [置顶] PopupWindow浮动下拉框与输入法存在的 pop往上弹出的问题