题目链接:https://vjudge.net/problem/UVA-1588
题目大意:给出两个长度分别为n1,n2且高度只为1,2的长条。需要将他们放入一个高为3的容器,问能容纳他们的容器的最短长度。
思路:for循环双层遍历字符串,能插入的条件为当前位置和小于4,根据这个条件判断即可。
注意for循环双层循环两个字符串需要分别为外层两次判断(可以单独写一个函数),然后选最小的数输出。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define maxn 110
int Compare(char s1[], char s2[]) {
int len1, len2, flag, i1 = 0, i2 = 0,index = 0;
for(len1 = 0; s1[len1]; len1++);
for(len2 = 0; s2[len2]; len2++);
for(i1 = 0; s1[i1]; i1++) {
index = i1;
flag = 0;
for(i2 = 0; s2[i2]; i2++) {
if(s1[index]=='2' && s2[i2]=='2') {
flag = 1;
break;
}
if(index >= len1) break;
index++;
}
if((!flag && i2==len2) || (!flag && index==len1)) break;
}
return i1+len2>len1?i1+len2:len1;
}
int main() {
freopen("i.txt","r",stdin);
char s1[maxn], s2[maxn];
int len1, len2;
while(~scanf("%s%s",s1,s2)) {
int min = Compare(s1,s2)<Compare(s2,s1)?Compare(s1,s2):Compare(s2,s1);
printf("%d\n",min);
}
}