hdu 1172
来源:互联网 发布:品茗网络计划2016破解 编辑:程序博客网 时间:2024/05/29 09:40
题目概述
电脑产生一个四位数,人去猜,每次猜电脑会反馈猜对几个数,其中有几个数位置也正确,给出人猜的数和电脑反馈结果,问是否可确定这个数,若可以,求出这个数
时限
10000ms/20000ms
输入
第一行正整数N,其后N行,每行一个4位整数,为人猜的数,一个1位整数,为猜对的个数,一个1位整数,为位置也正确的个数,输入以N=0结束
限制
1<=N<=100
输出
在一行中输出,若可确定,输出这个数,否则输出Not sure
样例输入
6
4815 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
样例输出
3585
Not sure
讨论
暴搜,额实在没有想到什么更好的方法,实际上作为一个人类额都无法直接根据给出的那6行猜出这个数,于是换个思路,对所有四位数,看看和每次猜的数相比有几位存在,有几位位置相同,如果最后只有一个满足所有条件,便可确定,所幸数据可能水点了,运行时间还是很可观的
不过题目描述有一个坑,从样例第一组第5条可以看到,猜的8585,应该有4位猜对,结果返回3,由此说明答案中的每个数只能被“猜对”一次
题解状态
46MS,1732K,1256 B,C++
题解代码
set<int>avail;//availablestruct 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
0 0
- HDU 1172
- hdu 1172
- HDU 1172
- hdu-1172
- hdu 1172
- HDU 1172
- hdu 1172
- hdu 1172
- hdu 1172
- hdu 1172
- hdu 1172 猜数字
- hdu 1172 猜数字
- hdu 1172 猜数字
- hdu(1172)猜数字
- hdu 1172 猜数字
- HDU-1172 猜数字
- HDU 1172(dfs)
- hdu 1172 猜数字
- 【WebService】带你走进webservice的世界
- maven打包本地文件jar
- lightoj1200 【完全背包】
- 学习git
- 文章标题
- hdu 1172
- Ubuntu 安装 python3.5
- Issure: Thunderbird Win10 左上角空白块
- maven初始化项目记录
- Backward Digit Sums POJ3187
- as 全局查找id 函数 等快捷键
- Head First设计模式学习—模板方法、策略模式
- 【嵌入式学习日记】2016年7月25日
- What makes for effective detection proposals?(PAMI2016)论文笔记