#include <iostream> #include <cstdio> #include <string> #include <algorithm> #include <cmath> using namespace std; int a[25]; int main() { int n;cin>>n; getchar(); while(n--){ int ii=0; string s; getline(cin,s); int len=s.length(); for(int i=0;i<len;i++){ if(s[i]>='0'&&s[i]<='9'){ a[ii]=s[i]-'0';ii++; } } if(ii==2){ cout<<a[1]-a[0]<<endl; continue; } int mn=1e9; int mid=ii/2; while(next_permutation(a,a+ii)){ int sum1=0;int sum2=0; if(a[0]==0) continue; if(a[mid]){ for(int i=0;i<mid;i++) sum1=sum1*10+a[i]; for(int i=mid;i<ii;i++) sum2=sum2*10+a[i]; int ab=abs(sum1-sum2); mn=min(mn,ab); } } cout<<mn<<endl; } return 0; } next_permutation(a,a+n)函数是升序排列(按字典序排),prev_permutation(a,a+n)函数为降序排列,位于头文件 algorithm 中;
