分析:
注意的就是特殊状态的考虑,
一个是前导0要考虑,
还有一个就是如果字符串只有2位,比如01,那么这个时候前导0是可以的,划分为0和1,差值是1.开始没考虑到这点,WA了两回。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#define maxn 1000
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
int T,A[maxn];
int a,b,Min;
char ss[maxn];
int zh(int x,int y){
// cout<<x<<" "<<y<<endl;
int res=0,ans=1;
for(int i=x;i<=y;i++){
res=res+A[i]*ans;
ans*=10;
}
return res;
}
int main(){
cin>>T;
getchar();
while(T--){
int len,q=0;
Min=inf;
gets(ss);
len=strlen(ss);
// cout<<len<<endl; //把空格读进去了
for(int i=0;i<len;i++){
if(ss[i]>='0'&&ss[i]<='9')
A[q++]=ss[i]-'0';
}
do{
if(A[q/2-1]==0||A[q-1]==0 &&q>2) continue;
a=zh(0,q/2-1);
b=zh(q/2,q-1);
Min=min(abs(a-b),Min);
}while(next_permutation(A,A+q));
cout<<Min<<endl;
}
return 0;
}