猜数字 Time Limit: 1000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 58 Accepted Submission(s): 1 Problem Description 猜数字游戏是gameboy最喜欢的游戏之一。游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上。 比如计算机随机产生的数字为1122。如果玩家猜1234,因为1,2这两个数字同时存在于这两个数中,而且1在这两个数中的位置是相同的,所以计算机会告诉玩家猜对了2个数字,其中一个在正确的位置。如果玩家猜1111,那么计算机会告诉他猜对2个数字,有2个在正确的位置。 现在给你一段gameboy与计算机的对话过程,你的任务是根据这段对话确定这个四位数是什么。 Input 输入数据有多组。每组的第一行为一个正整数N(1<=N<=100),表示在这段对话中共有N次问答。在接下来的N行中,每行三个整数A,B,C。gameboy猜这个四位数为A,然后计算机回答猜对了B个数字,其中C个在正确的位置上。当N=0时,输入数据结束。 Output 每组输入数据对应一行输出。如果根据这段对话能确定这个四位数,则输出这个四位数,若不能,则输出"Not sure"。 SampleInput 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 SampleOutput 3585 Not sure
还没做出来,网上说是水题.
目前代码附上:
1 #include<stdio.h> 2 #include<math.h> 3 #define elm 4 4 5 //给flag数组赋值 6 void valuation(int arr[],int x,int len) 7 { 8 if(len>4) 9 { 10 return; 11 } 12 for(int i=elm-1;i>=0;i--) 13 { 14 arr[i] = x % (int)pow(10,len-i); 15 } 16 return; 17 } 18 19 //将flag数组中不正确的值置为-1 20 void setting(int arr[],int x,int len) 21 { 22 if(len>4) 23 { 24 return; 25 } 26 int brr[len]; 27 //赋值 28 valuation(brr,x,len); 29 30 for(int i=0;i<elm;i++) 31 { 32 for(int j=0;j<len;j++) 33 { 34 if(arr[i]==brr[j]) 35 { 36 arr[i] = -1; 37 } 38 } 39 } 40 } 41 42 //更改数组元素值(如有必要) 43 void change(int arr[],int x,int len) 44 { 45 if(len>4) 46 { 47 return; 48 } 49 int crr[len]; 50 //赋值 51 valuation(crr,x,len); 52 53 } 54 55 56 57 int main() 58 { 59 int n = 0; 60 int i; 61 62 while(scanf("%d",&n)!=0) 63 { 64 //标记数及c存放最终结果的数组(无法确定的数用-1表示) 65 int isp = 1; 66 int flag[elm] = {0}; 67 while(n--) 68 { 69 int a,b,c; 70 scanf("%d%d%d",&a,&b,&c); 71 if(b==0) 72 { 73 valuation(flag,a,4); 74 if(c!=0) 75 { 76 //换值 77 change(flag,a,4); 78 } 79 } 80 //一个数字都没猜对 81 else 82 { 83 //-1 84 setting(flag,a,4); 85 } 86 87 } 88 for(i=0;i<elm;i++) 89 { 90 //如果其中存在一个无法确定的数(-1),则isp置为0; 91 if(flag[i]==-1) 92 { 93 isp = 0; 94 break; 95 } 96 } 97 if(isp) 98 { 99 for(i=0;i<elm;i++) 100 { 101 printf("%d",flag[i]); 102 } 103 printf("\n"); 104 } 105 else 106 { 107 printf("Not Sure\n"); 108 } 109 110 } 111 112 return 0; 113 }