hdu 1172 猜数字
2014-03-27 17:20
387 查看
直接枚举1000到9999,如果没有满足或者满足超过2个数字,则是not sure;
从3585枚举也可以过,原因是数据太弱;
感觉自己的代码有点乱,思路不清晰,缺少代码简化和优化!
从3585枚举也可以过,原因是数据太弱;
感觉自己的代码有点乱,思路不清晰,缺少代码简化和优化!
#include<stdio.h> #include<string.h> struct un{ int t,x,y; }; struct un z[100]; bool compare(int a,int b){ int p=0,q=0; int num[10]; memset(num,0,sizeof(num)); int u=a,v=z[b].t; for(int i=0;i<4;i++){ if(u%10==v%10) q++; num[u%10]++; u/=10; v/=10; } v=z[b].t; for(int i=0;i<4;i++){ if(num[v%10]){ num[v%10]--; p++; } v/=10; } if(p==z[b].x&&q==z[b].y) return true; return false; } int main(){ //freopen("hdu1172.in","r",stdin); int n,i,j,k,cnt,ans; while(scanf("%d",&n)!=EOF){ if(!n) break; cnt=0; for(i=0;i<n;i++) scanf("%d%d%d",&z[i].t,&z[i].x,&z[i].y); for(i=1000;i<10000;i++){ k=1; for(j=0;j<n;j++){ if(!compare(i,j)){ k=0; break; } } if(k) ans=i; cnt+=k; if(cnt>1) break; } if(cnt!=1) printf("Not sure\n"); else printf("%d\n",ans); } }
相关文章推荐
- HDU-1172 猜数字
- HDU1172 猜数字【水题】
- HDU 1172 猜数字 (傻逼暴力题)
- HDU 1172 猜数字
- HDU 1172 猜数字(暴力)
- HDU - 1172 猜数字
- HDU-1172 猜数字
- hdu - 1172 猜数字 (思维题)
- hdu 1172 猜数字
- HDU 1172 猜数字
- hdu 1172 猜数字
- hdu 1172 猜数字(暴力枚举)
- HDU 1172 猜数字(模拟)
- hdu1172 猜数字(枚举)
- hdu 1172 猜数字 解题报告<暴力枚举>
- hdu 1172 猜数字
- hdu 1172 猜数字
- hdu 1172 猜数字(water)
- HDU:1172 猜数字
- HDU - 1172 猜数字 (暴力+模拟)