题意:给定两个长度和高度已知的条条,每列高度为1或2,求放在一个高度为3的容器中需要的最短容器长度
模拟,暴力枚举相交情况并判断,不停地更新答案
注意细节
代码如下:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
using namespace std;
char c[2][105];
int main(){
while(scanf("%s",c[0])==1){
scanf("%s",c[1]);
int l0=strlen(c[0]),l1=strlen(c[1]);
int ans=l0+l1;
for(int i=0;i<l0;++i){
bool flag=1;
for(int j=i;j<l0&&j-i<l1;++j){
if(c[1][j-i]-'0'+c[0][j]-'0'>3){
flag=0;break;
}
}
if(flag){
int tmp=max(l0,l1+i);
ans=min(tmp,ans);
}
}
for(int i=0;i<l1;++i){
bool flag=1;
for(int j=i;j<l1&&j-i<l0;++j){
if(c[0][j-i]-'0'+c[1][j]-'0'>3){
flag=0;break;
}
}
if(flag){
int tmp=max(l1,l0+i);
ans=min(tmp,ans);
}
}
printf("%d\n",ans);
}return 0;
}