傳送門ios
題目大意:升序輸入十進制數 沒有重複 分紅兩個非空集合 每一個集合組成一個數(不能有前導零) 數組
求兩個數差的最小值。學習
題解:全排列...我數組從1開始怎麼一直WA...還有這個輸入值得學習。spa
代碼:code
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define INF 100000000 using namespace std; int T; int js,ans; int a[21]; int mul(int x,int y) { int sum=0; for(int i=x; i<=y; i++) { sum=sum*10+a[i]; } return sum; } int main() { scanf("%d",&T); getchar(); while(T--) { int s; ans=INF; js=0; while((s=getchar())!='\n') { if(s==' ') continue; a[js++]=s-'0'; } int mid; mid=js/2; if(js==1) { printf("%d\n",a[0]); // return 0;************ continue; } if(js==2) { printf("%d\n",a[1]-a[0]); continue; // return 0; } while(a[0]==0) next_permutation(a,a+js); do { if(a[mid]==0) continue; int tmp1=0,tmp2=0; tmp1=mul(0,mid-1); tmp2=mul(mid,js-1); ans=min(ans,abs(tmp1-tmp2)); } while(next_permutation(a,a+js)); printf("%d\n",ans); } return 0;}