一道很水很水的题,比赛的时候没想清楚就乱下结论,导致我们本来可以出这题的没出;
我认错,我保证以后不再出现这种情况!^ ^
当初我一直没想清楚怎么处理前端0的,直到看到小珺的程序~~~
看来我的逻辑能力还得加强!
代码:
1 #include<cstdio> 2 #include<cstring> 3 #define maxn 1000005 4 using namespace std; 5 int a[10],b[10],c[10][10]; 6 char s1[maxn],s2[maxn]; 7 8 int first() 9 { 10 for(int k=9; k>=0; k--) 11 for(int i=1; i<=9; i++) 12 for(int j=1; j<=9; j++) 13 if(c[i][j]==k&&a[i]>0&&b[j]>0) 14 { 15 printf("%d",k); 16 a[i]--; 17 b[j]--; 18 return k; 19 } 20 } 21 22 int main() 23 { 24 for(int i=0; i<=9; i++) 25 for(int j=0; j<=9; j++) 26 c[i][j]=(i+j)%10; 27 int t,ca=1; 28 scanf("%d",&t); 29 while(t--) 30 { 31 memset(a,0,sizeof a); 32 memset(b,0,sizeof b); 33 scanf("%s%s",s1,s2); 34 int l=strlen(s1); 35 for(int i=0; i<l; i++) 36 { 37 a[s1[i]-'0']++; 38 b[s2[i]-'0']++; 39 } 40 printf("Case #%d: ",ca++); 41 if(first()!=0) 42 for(int k=9; k>=0; k--) 43 for(int i=0; i<=9; i++) 44 for(int j=0; j<=9; j++) 45 if(c[i][j]==k) 46 while(a[i]>0 && b[j]>0) 47 { 48 printf("%d",k); 49 a[i]--; 50 b[j]--; 51 } 52 printf(" "); 53 } 54 return 0; 55 }