hdu 4726 Kia's Calculation (贪心)

来源:互联网 发布:西游记续集知乎 编辑:程序博客网 时间:2024/04/23 14:40
# include <stdio.h># include <algorithm># include <string.h>using namespace std;char a[1000010],b[1000010];int a1[1000010],b1[1000010],cot[1000010];int vis1[1000010],vis2[1000010];int main(){int t,i,len,ans,flag,j,k;while(~scanf("%d",&t)){int ans=0;while(t--){scanf("%s %s",a,b);memset(vis1,0,sizeof(vis1));            memset(vis2,0,sizeof(vis2));len=strlen(a);for(i=0;i<len;i++){vis1[a[i]-'0']++;vis2[b[i]-'0']++;}if(len==1){printf("Case #%d: %d\n",++ans,(a[0]-'0'+b[0]-'0')%10);}else{printf("Case #%d: ",++ans);//首位处理                for(i=9;i>=0;i--)//从大的树取起{flag=0;for(j=1;j<=9;j++)//没有前导零{int kk=(10+i-j)%10;if(kk==0)continue;if(vis1[j]&&vis2[kk]){vis1[j]--;vis2[kk]--;cot[0]=i;flag=1;break;}}if(flag)break;}if(cot[0]==0)//最大为零{printf("0\n");}else{for(i=1;i<len;i++){for(j=9;j>=0;j--){flag=0;for(k=0;k<=9;k++){int kk=(10+j-k)%10;if(vis1[k]&&vis2[kk]){vis1[k]--;vis2[kk]--;cot[i]=j;flag=1;break;}}if(flag)break;}}for(i=0;i<len;i++){printf("%d",cot[i]);}printf("\n");}}}return 0;}}

2 2
原创粉丝点击