UVa 1588

来源:互联网 发布:树莓派开源人工智能 编辑:程序博客网 时间:2024/06/05 07:55

题目:有两个带不规则齿的矩形工件,有齿厚度是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;}