您的位置:首页 > 其它

UVA 1588_Kickdown

2015-09-29 21:45 405 查看
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51983

题目意思是说,给你两个每列高度为1或2的长条,让你塞进高度为3的容器里,问你这个容器最短要多长。

只要分别以两个长条为基础,移动另外一个长条然后比对,计算出他们重合的部分,最后拿他们的总长度减去重合部分就是这个容器的长度了。

然后这道题莫名其妙地WA了好多发,真的是莫名其妙······

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int main()
{
char a[110];
char b[110];
while(cin>>a>>b)
{
int len1=strlen(a);
int len2=strlen(b);
int k=0;
int i=0;
int kk=0;
while(k<len2&&i<len1)
{
int p=a[i]-'0';
int q=b[k]-'0';
if(p+q<=3)
{
i++;
k++;
}
else
{
kk++;
i=kk;
k=0;
}
}
int ans=len1+len2-k;
i=0;
k=0;
kk=0;
while(k<len2&&i<len1)
{
int p=a[i]-'0';
int q=b[k]-'0';
if(q+p<=3)
{
i++;
k++;
}
else
{
kk++;
k=kk;
i=0;
}
}
int nut=len1+len2-i;
ans=ans<nut?ans:nut;
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva