HDU 1172 猜数字
来源:互联网 发布:linux权威指南 编辑:程序博客网 时间:2024/06/04 18:39
枚举所有的四位数,找到符合条件的,设置一个数组记录0~9出现次数再比较穷举的数,算出每个数字出现达标数量,判断位置就更容易了,直接比较就行了,数据量最大100*10000,无需考虑无解情况,有一个解就时可以确定,多个解就不能确定。
#include<stdio.h>#include<string.h>int main(){ char a[102][4]; int i,j,n,x[102],y[102]; while(~scanf("%d",&n)&&n) { for(i=0; i<n; i++) { scanf("%s %d %d",a[i],&x[i],&y[i]); } int e=0,f; short b[11]; for(j=1000; j<=9999; j++) { int X=0,Y=0; memset(b,0,sizeof(b)); int a1=j/1000,a2=(j%1000)/100,a3=(j%100)/10,a4=j%10; int sum=0; for(i=0; i<n; i++) { b[a1]++; b[a2]++; b[a3]++; b[a4]++; X=0,Y=0; if(b[(a[i][0]-'0')]) X++,b[(a[i][0]-'0')]--; if(b[(a[i][1]-'0')]) X++,b[(a[i][1]-'0')]--; if(b[(a[i][2]-'0')]) X++,b[(a[i][2]-'0')]--; if(b[(a[i][3]-'0')]) X++,b[(a[i][3]-'0')]--; memset(b,0,sizeof(b)); if(a1==a[i][0]-'0') Y++; if(a2==a[i][1]-'0') Y++; if(a3==a[i][2]-'0') Y++; if(a4==a[i][3]-'0') Y++; if(X==x[i]&&Y==y[i]) sum++; } if(sum==n) { f=j; e++; } if(e>1) break; } if(e>1) printf("Not sure\n"); else printf("%d\n",f); } return 0;}
1 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 猜数字
- HDU:1172 猜数字
- WARNING POSSIBLE DNS SPOOFING DETECTED
- JAVA代理模式
- Lua中的基本函数库
- Map集合的四种遍历方式
- pat 甲 1099. Build A Binary Search Tree (二叉搜索树)
- HDU 1172 猜数字
- Pymongo库简单应用(Python的mongodb库)
- Oracle RAC 12c Database on Linux Using VirtualBox
- spring cloud config分布式配置中心的高可用
- 腾讯视频客户端缓存提取mp4文件工具
- java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和联系
- std::string用法详解
- 因为不舍,所以绵长
- 在Oracle Linux7中怎么配置hostname