题目描述:
给出两个长度分别为n1,n2且每列高度只为1或2的长条,需要将它们放入一个高度为3的容器,求出能够容纳他们的最短容器长度。
本题思路:
模拟插入,从第一个接口开始插,如果不满足条件就跳到下一个接口,满足条件时跳出函数输出答案即可。
#include<bits/stdc++.h>
using namespace std;
int slo(char a[], char b[], int ha, int hb){
int len = ha+hb, i, j;
char temp[300];
memset(temp, '\0', sizeof(temp));
for(i = hb;i < hb+ha;i ++)temp[i] = a[i-hb];
for(i = 0;i < ha+hb;i ++){
for(j = 0;j < hb;j ++){
if(temp[i+j]+b[j] > '1'+'2')goto end;
}
if(i < hb)len = ha+hb-i;
else if(i >= hb && i < ha)len = ha;
else if(i < len)len = i;
end:;
}
return len;
}
int main(){
char a[105], b[105];
while(scanf("%s %s", a, b)==2){
int ha = strlen(a), hb = strlen(b), len = 0;
if(ha > hb)len = slo(a, b, ha, hb);
else len = slo(b, a, hb, ha);
printf("%d\n", len);
}
return 0;
}