hdu 1172
2016-07-25 10:31
169 查看
题目概述
电脑产生一个四位数,人去猜,每次猜电脑会反馈猜对几个数,其中有几个数位置也正确,给出人猜的数和电脑反馈结果,问是否可确定这个数,若可以,求出这个数时限
10000ms/20000ms输入
第一行正整数N,其后N行,每行一个4位整数,为人猜的数,一个1位整数,为猜对的个数,一个1位整数,为位置也正确的个数,输入以N=0结束限制
1<=N<=100输出
在一行中输出,若可确定,输出这个数,否则输出Not sure样例输入
64815 2 1
5716 1 0
7842 1 0
4901 0 0
8585 3 3
8555 3 2
2
4815 0 0
2999 3 3
0
样例输出
3585Not sure
讨论
暴搜,额实在没有想到什么更好的方法,实际上作为一个人类额都无法直接根据给出的那6行猜出这个数,于是换个思路,对所有四位数,看看和每次猜的数相比有几位存在,有几位位置相同,如果最后只有一个满足所有条件,便可确定,所幸数据可能水点了,运行时间还是很可观的不过题目描述有一个坑,从样例第一组第5条可以看到,猜的8585,应该有4位猜对,结果返回3,由此说明答案中的每个数只能被“猜对”一次
题解状态
46MS,1732K,1256 B,C++题解代码
set<int>avail;//available struct state//每次人机对话的结构 { int n, a, b;//猜的数 对的数 位置也正确的数 }states[MAXN]; bool check(int num, state a)//检查是否满足人机对话条件 { int wa[4] = { num / 1000 , num / 100 % 10 ,num / 10 % 10 , num % 10 }, wb[4] = { a.n / 1000 ,a.n / 100 % 10 , a.n / 10 % 10, a.n % 10 };//wa是暴搜的数的4位 wb是人机对话时猜的数的4位 bool found[4] = {};//为了应对题目的坑 答案中每个数只能被猜对一次 int cnta = 0, cntb = 0;//猜对的个数 位置正确的个数 for (int p = 0; p < 4; p++) { if (wa[p] == wb[p]) cntb++;//位置正确 for (int i = 0; i < 4; i++) { if (wa[i] == wb[p] && !found[i]) {//猜对并且不曾被“猜对”过 cnta++; found[i] = 1; break; } } } return cnta == a.a&&cntb == a.b;//两条都完全相同 返回1 } void fun(int N) { for (int p = 0; p < N; p++) scanf("%d%d%d", &states[p].n, &states[p].a, &states[p].b);//input for (int p = 0; p < 10000; p++) { bool no = 0;//不符合某次人机对话结果 for (int i = 0; i < N&&!no; i++) if (!check(p, states[i])) no = 1; if (!no) avail.insert(p);//若都符合 加入可行解中 } if (avail.size() == 1) printf("%d\n", *avail.begin());//output//仅有1个可行解 就是他了 else printf("Not sure\n");//output//否则不确定 } int main(void) { //freopen("vs_cin.txt", "r", stdin); //freopen("vs_cout.txt", "w", stdout); int N; while (~scanf("%d", &N) && N) {//input fun(N); avail.clear();//注意需要清零 } }
EOF
相关文章推荐
- Shell脚本如何链接数据库并导出数据
- 理清js中数组与对象的区别-数据类型和Json格式
- json数据避免$ref 循环引用
- 使用JMAP dump及分析dump文件
- FastCgi与PHP-fpm之间是个什么样的关系
- maven常用命令
- lightoj1200 【完全背包】
- 应用程序无法正常启动
- nncq---咨询回复(地方查询慢)
- window7取消文件默认打开方式的方法
- 刺客信条III:背后的技术(或下方)的动作
- mysql 最大显示宽度关系
- ios 崩溃日志收集
- Codeforces 629 C Famil Door and Brackets(dp)
- 存储引擎MyISAM与InnoDB区别
- 性能调试 systrace工具
- 《Python核心编程》第二版--第三章 Python基础
- linux 防火墙
- HTML&CSS基础学习笔记1.17-表格的头部与尾部
- hdu 1518 Square(dfs)