uva1588kickdown

题目要求简述:给定长度分别为n1,n2(n1,n2<=100)且每列的高度只为1或者2的长条。需要将他们放入一个高度为3的容器,问能够容纳它们的最短容器长度。

思路就是固定一个字符串a,字符串b移动,再固定b,让a移动,取二者长度最小值。

之前写的函数有问题,wrong answer错误了很多遍,调试的时候学习了重定向,参考了一篇博客ac的。

#include<fstream>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define max 110
using namespace std;

int min(const int &i, const int &j) {
    return i<j ? i : j;
}

int offset(char *s1, char *s2, int &ls1, int &ls2) {
    int sum = ls1 + ls2, f, l = ls1 + ls2, minn = min(ls1, ls2);
    bool flag;
    for (int i = 0;i < ls1;i++) {
        flag = true;f = min(minn, ls1 - i);
        for (int j = 0;j < f;j++) {
            if ((s1[i + j] == ‘2‘) && (s2[j] == ‘2‘)) {
                flag = false;
                break;
            }
        }
        if (flag&&l > sum - f) {
            l = sum - f;
        }
    }
    return l;
}

int main()
{
    int offset(char *s1, char *s2, int &ls1, int &ls2);
    char str1[max],str2[max];
    int l1,l2;
    /*ifstream fin("G:\\algorithm\\uva\\input\\1588in.txt");
    ofstream fout("G:\\algorithm\\uva\\output\\result.txt");
    streambuf *cinbackup;
    streambuf *coutbackup;
    coutbackup = cout.rdbuf(fout.rdbuf());
    cinbackup = cin.rdbuf(fin.rdbuf()); */
    while (cin >> str1 >> str2) {
        l1 = strlen(str1);
        l2 = strlen(str2);
        int res1 = offset(str1,str2,l1,l2);
        int res2 = offset(str2,str1,l2,l1);
        cout << min(res1,res2) << endl;
        memset(str1, 0, sizeof(str1));
        memset(str2, 0, sizeof(str2));
    }
    return 0;
}

参考博客地址

时间: 2024-10-24 18:52:04

uva1588kickdown的相关文章

第三章答案

地址:http://www.th7.cn/Program/java/201408/253926.shtml 3 习题 3.1 UVa1585--Score #include int main() { int T; scanf("%d", &T); while (T--) { char s[100]; scanf("%s", s); int sum = 0, cnt = 0; for (int i = 0; s[i]; i++) { if (s[i]=='X'

紫书第三章 数组和字符串

1  序 系统的整理下第三章的学习笔记.例题代码是在未看书本方法前自己尝试并AC的代码,不一定比书上的标程好:习题除了3-8百度了求解方法,其它均独立完成后,会适当查阅网上资料进行整理总结.希望本博文方便自己日后复习的同时,也能给他人带来点有益的帮助(建议配合紫书--<算法竞赛入门经典(第2版)>阅读本博客).有不足或错误之处,欢迎读者指出. 2  例题 2.1  UVa272--Tex Quotes #include <stdio.h> int main() { bool log