hdu 4726

一道很水很水的题,比赛的时候没想清楚就乱下结论,导致我们本来可以出这题的没出;

我认错,我保证以后不再出现这种情况!^ ^

当初我一直没想清楚怎么处理前端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("\n");
53     }
54     return 0;
55 }
View Code

 

posted @ 2013-09-12 19:34  Yours1103  阅读(175)  评论(0编辑  收藏  举报