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 }
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 }