hdu 1172 猜数字 解题报告<暴力枚举>
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1172
View Code
1 #include <cstdio> 2 #include <iostream> 3 #include <cmath> 4 #include <cstdlib> 5 #include <cstring> 6 #include <algorithm> 7 using namespace std; 8 typedef long long LL; 9 int s[110][3]; 10 int test( int n, int t ) 11 { 12 int a[4], b[4], c[4]={0, 0, 0, 0}, k=0; 13 a[0]=n%10, a[1]=(n/10)%10, a[2]=(n/100)%10, a[3]=n/1000; 14 b[0]=s[t][0]%10, b[1]=(s[t][0]/10)%10, b[2]=(s[t][0]/100)%10, b[3]=s[t][0]/1000; 15 for( int i=0;i<4;++i ){ 16 if( a[i]==b[i] )k++; 17 } 18 if( k!=s[t][2] )return 0; 19 k=0; 20 for( int i=0; i<4; ++ i ){ 21 for(int j=0; j<4; ++ j ){ 22 if( a[i]==b[j]&& c[j]==0){ 23 c[j]=1; 24 k++; 25 break; 26 } 27 } 28 } 29 if( k==s[t][1] )return 1; 30 return 0; 31 32 } 33 int main( ) 34 { 35 int N; 36 while(scanf ("%d", &N ), N){ 37 for (int i=0; i<N; ++i ){ 38 scanf( "%d%d%d", &s[i][0], &s[i][1], &s[i][2] ); 39 } 40 int k=0, ans, flag, i, j; 41 for( i=1000; i<10000; ++ i ){ 42 for( j=0;j<N; ++ j ){ 43 flag=test( i, j ); 44 if( flag==0 )break; 45 } 46 if( j==N ){ 47 k++; 48 ans=i; 49 if(k==2)break; 50 } 51 } 52 if( k==1 ) printf( "%d\n", ans ); 53 else puts( "Not sure" ); 54 } 55 //system( "pause" ); 56 return 0; 57 } 58