abs写成fabs导致WA了一发。
关于next_permutation()这个STL里面的函数的基本应用
http://www.cnblogs.com/luosuo10/p/5479188.html
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <cmath> 6 using namespace std; 7 int T,n,A,B; 8 int a[20]; 9 char s[20]; 10 const int inf=0x3f3f3f; 11 void input() 12 { 13 n=0; 14 gets(s); 15 int len=strlen(s); 16 17 for(int i=0;i<len;i++) 18 { 19 if(‘0‘ <= s[i] && s[i] <= ‘9‘) 20 { 21 a[n++] = s[i]-‘0‘; 22 } 23 } 24 25 } 26 void solve() 27 { 28 if(n==2) 29 { 30 printf("%d\n",abs(a[0]-a[1])); 31 return ; 32 } 33 34 int mid=(n+1)/2; 35 int ans=inf; 36 do 37 { 38 A=B=0; 39 if(a[0]!=0 && a[mid]!=0) 40 { 41 for(int i=0;i<mid;i++) 42 { 43 A=A*10+a[i]; 44 } 45 for(int i=mid;i<n;i++) 46 { 47 B=B*10+a[i]; 48 } 49 int res=max(A-B,B-A);//>=0 50 ans=min(ans,res); 51 } 52 53 }while(next_permutation(a,a+n)); 54 55 56 printf("%d\n",ans); 57 } 58 int main() 59 { 60 scanf("%d",&T); 61 getchar(); 62 while(T--) 63 { 64 input(); 65 solve(); 66 } 67 return 0; 68 }
时间: 2024-10-14 06:29:46