标签:style blog http io color os ar for sp
注意到有10000组数据,预处理一下v数组就毫无鸭梨了~~~
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 bool v[1024][110]; 7 int a[20],b[1024],ans,n,i,j,k,t,x,y; 8 long long c[1024],temp; 9 10 int main() 11 { 12 for(i=0;i<1024;i++) 13 { 14 for(j=9;j>=0;j--) 15 if(i>>j&1) b[i]++,c[i]=c[i]*10+j; 16 for(j=0;j<10;j++) 17 if(i>>j&1) v[i][j]=1; 18 for(j=0;j<10;j++) 19 for(k=0;k<10;k++) 20 if(j!=k&&(i>>j&1)&&(i>>k&1)) v[i][j*10+k]=v[i][j+k]=1; 21 for(j=0;j<10;j++) if(i>>j&1) 22 for(k=0;k<10;k++) if(j!=k&&(i>>k&1)) 23 for(x=0;x<10;x++) if(x!=j&&x!=k&&(i>>x&1)) 24 { 25 if(j*10+k+x<=100) v[i][j*10+k+x]=1; 26 for(y=0;y<10;y++) if(y!=j&&y!=k&&y!=x&&(i>>y&1)) 27 if(j*10+k+x*10+y<=100) v[i][j*10+k+x*10+y]=1; 28 } 29 } 30 while(~scanf("%d",&n)&&n) 31 { 32 ans=100; 33 for(i=1;i<=n;i++) scanf("%d",&a[i]); 34 for(i=1;i<1024;i++) 35 { 36 for(j=1;j<=n;j++) if(!v[i][a[j]]) break; 37 if(j>n&&b[i]<ans||b[i]==ans&&c[i]<temp) ans=b[i],temp=c[i]; 38 } 39 printf("Case %d: %lld\n",++t,temp); 40 } 41 return 0; 42 }
标签:style blog http io color os ar for sp
原文地址:http://www.cnblogs.com/zyfzyf/p/4056533.html