首页 > 代码库 > Uva 1588 Kickdown

Uva 1588 Kickdown

  这道题思路并不难想,在做题过程中主要遇到的困难有:

  因为没有仔细的考虑边界情况,没有分析全面,导致因=没有取到而得不出正确结果,浪费的大量时间。

  今后在做这类题目时,一定要先进行一个比较全面的分析+模拟,再动手写代码,避免浪费时间。

  

 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 #define maxn 1000 6 int main(){ 7     int len1,len2; 8     char s1[maxn],s2[maxn]; 9     while(scanf("%s %s",s1,s2)!=EOF){10         len1=strlen(s1);11         len2=strlen(s2);12         for(int i=len1;i<len1+len2;i++)s1[i]=0;13         for(int i=len2;i<len1+len2;i++)s2[i]=0;14         int ok;15         int minv=maxn;16         for(int i=0;i<=len2;i++){17             ok=1;18             for(int j=0;j<min(len1,len2-i);j++){19                 if(s2[i+j]+s1[j]-2*0>3){20                     ok=0;21                     break;22                 }23             }24             if(ok&&max(len2,len1+i)<minv)minv=max(len2,len1+i);25         }26         for(int i=0;i<=len1;i++){27             ok=1;28             for(int j=0;j<min(len2,len1-i);j++){29                 if(s1[i+j]+s2[j]-2*0>3){30                     ok=0;31                     break;32                 }33             }34             if(ok&&max(len1,len2+i)<minv)minv=max(len1,len2+i);35         }36         printf("%d\n",minv);37     }38     return 0;39 }

 

Uva 1588 Kickdown