背景:1——WA:很难想到还有如下情况(见图),认真读题后发现!!!
思路:就是吧两个部件所有重合情况都考虑了,取其中满足的最小长度。
学习:1.‘1‘+‘2‘=‘3‘是错误的!!!!!!!!!
#include<stdio.h> #include<string.h> int make(char a[],char b[],int ha, int hb); int make(char a[],char b[],int ha,int hb){ int ans=ha+hb; char temp[300]; memset(temp,'\0',sizeof(temp)); for(int i=hb;i<hb+ha;i++){ temp[i]=a[i-hb]; } for(int i=0;i<ha+hb;i++){ bool ok=false; for(int j=i;j<hb+i;j++){ if(temp[j]+b[j-i]>'1'+'2'){ ok=true; break; } } if(!ok){ if(i<hb) ans=ha+hb-i; else if(i>=hb&&i<ha) ans=ha; else if(i<ans) ans=i; } } return ans; } int main(void){ char a[105],b[105]; while(scanf("%s %s",a,b)==2){ int ha=strlen(a),hb=strlen(b); int ans; if(ha>=hb) ans=make(a,b,ha,hb); else ans=make(b,a,hb,ha); printf("%d\n",ans); } return 0; }
时间: 2024-10-12 00:28:18