代码改变世界

1239. Smallest Differencev

2011-05-19 23:06  Min·zc  阅读(221)  评论(0编辑  收藏  举报
 1 #include <iostream>
 2 #include <memory.h>
 3 using namespace std;
 4 int s[12];
 5 int an[12];
 6 //int ck[12];
 7 int ans=99999;
 8 int n;
 9 void sol(int t,int max,int min)
10 {
11 
12         if(t==n)
13         {
14         //     cout<<max<<" "<<min<<endl;
15                 if(min<max&&max-min<ans)
16                         ans=max-min;
17                 return ;
18         }
19         for(int i=0;i<10;i++)
20         {
21                 if(t==0&&i==0)
22                         continue;
23                 if(i==0&&t==(n+1)/2&&n!=2)
24                         continue;
25                 if(s[i]==1&&t<(n+1)/2)
26                 {
27                         an[t]=i;
28                         int tem=max*10+i;
29                         s[i]=0;
30                         sol(t+1,tem,min);
31                         s[i]=1;
32                 }
33                 
34                 if(s[i]==1&&t>=(n+1)/2)
35                 {
36                         if(n%2==0&&an[0]<i&&t==(n+1)/2)
37                                 return ;
38 
39                         int tem=min*10+i;
40                         s[i]=0;
41                         sol(t+1,max,tem);
42                         s[i]=1;
43                 }
44         }
45         return ;
46 }
47 int main()
48 {
49         int t;
50         cin>>t;
51         char x;
52         cin.get(x);
53         while(t--)
54         {
55                 n=0;
56                 ans=999999;
57                 memset(s,0,sizeof(s));
58                 memset(an,0,sizeof(an));
59                 
60                 char c;
61                 while(cin.get(c))
62                 {
63                         if(c=='\n')
64                                 break;
65                         else if(c!=' ')
66                         {
67                                 s[c-'0']=1;
68                                 ck[c-'0']=1;
69                                 n++;
70                         }
71 
72                 }
73         //     cout<<n<<endl;
74                 sol(0,0,0);
75                 cout<<ans<<endl;
76         }
77 }