您的位置:首页 > 其它

Uva 1588 Kickdown

2016-11-05 08:38 435 查看
  这道题思路并不难想,在做题过程中主要遇到的困难有:

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

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

  

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define maxn 1000
int main(){
int len1,len2;
char s1[maxn],s2[maxn];
while(scanf("%s %s",s1,s2)!=EOF){
len1=strlen(s1);
len2=strlen(s2);
for(int i=len1;i<len1+len2;i++)s1[i]='0';
for(int i=len2;i<len1+len2;i++)s2[i]='0';
int ok;
int minv=maxn;
for(int i=0;i<=len2;i++){
ok=1;
for(int j=0;j<min(len1,len2-i);j++){
if(s2[i+j]+s1[j]-2*'0'>3){
ok=0;
break;
}
}
if(ok&&max(len2,len1+i)<minv)minv=max(len2,len1+i);
}
for(int i=0;i<=len1;i++){
ok=1;
for(int j=0;j<min(len2,len1-i);j++){
if(s1[i+j]+s2[j]-2*'0'>3){
ok=0;
break;
}
}
if(ok&&max(len1,len2+i)<minv)minv=max(len1,len2+i);
}
printf("%d\n",minv);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: