UVA - 1588 Kickdown

来源:互联网 发布:怎样把nginx部署到公网 编辑:程序博客网 时间:2024/05/01 14:25

UVA - 1588 Kickdown

题目大意:给出两个长度不一定相同且每列高度为 1 或 2 的长条,将它们放入一个高度为 3 的容器,求最短容器长度。

解题思路:一个一个匹配 超过3的就不可以 然后左右移动上面的 取最小的

#include<iostream>#include<cstring>#include<cstdio>int max(int x, int y) {    if (x >= y) return x;    else return y;}int min(int x, int y) {    if (x <= y) return x;    else return y;}int main () {    bool f;    char a[105],b[105];    while (scanf("%s%s", a, b) != EOF ) {        int la = strlen(a),lb = strlen(b),l = 0,ll = 0;        for (int i = 0; i < la ;i++,l++) {            f = 1;            for (int j = 0; j < lb && j + i < la; j++) {                if ( b[j] == '2' && a[i+j] == '2') {                    f = 0;                    break;                }            }            if (f) {                break;            }         }        l = max(la, lb + l);        for (int i = 0; i < lb; i++,ll++) {            f = 1;            for (int j = 0; j < la && j + i < lb; j++) {                if ( a[j] == '2' &&  b[i+j] == '2') {                    f = 0;                    break;                }            }            if (f) {                break;             }        }        ll = max(lb ,la + ll);        printf("%d\n", min(ll,l));         memset(a, 0, sizeof(a));        memset(b, 0, sizeof(b));    }}
0 0
原创粉丝点击