题目:有两个带不规则齿的矩形工件,有齿厚度是2,其他地方是1,在宽度为3的原料上切割出来,
问原料的最小长度。
分析:模拟。直接枚举开始位置,如果最厚的地方是3即为合法,求出最小值即可。
说明:这里不需要转向。
#include <stdio.h>
#include <string.h>
char gear1[101];
char gear2[101];
int main()
{
while (~scanf("%s",gear1)) {
scanf("%s",gear2);
int length1 = strlen(gear1);
int length2 = strlen(gear2);
int ans = length1 + length2;
for (int s = -length2; s < length1; ++ s) {
int thick = 0;
for (int i = 0; i < length2; ++ i) {
if (s+i >= 0 && s+i < length1) {
if (thick < gear1[s+i]-'0' + gear2[i]-'0') {
thick = gear1[s+i]-'0' + gear2[i]-'0';
}
}
}
if (thick <= 3) {
int l = s<0?s:0;
int r = (s+length2)>length1?(s+length2):length1;
if (ans > r-l) {
ans = r-l;
}
}
}
printf("%d\n",ans);
}
return 0;
}