UVA - 1588 Kickdown

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));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值