UVA 1588-Kickdown
题目大意: 一个容器高度为3,俩个成员都是1或2的字符串,判断容器长度最短多少可以装下俩个字符串
解题思路: 从字符串a的最后一个字符与字符串b的第一个字符开始,依次比较,找出最优解
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int main() {
char a[100000], b[100000];
while(scanf("%s%s", a, b) != EOF) {
int l1, l2, l;
l1 = strlen(a);
l2 = strlen(b);
if(l1 >= l2)
l = l1;
else
l = l2;
int i = l1 - 1, j = 0, max = 0;
for(;j < l2 + l1;j++) {
int s = 0;
int m = i, n = j;
for(;n >= l2 || a[m] - '0' + b[n] - '0' <= 3 || (m * n) < 0;m--, n--) {
if(m < 0 || n < 0) {
if(max < s)
max = s;
break;
}
if(n < l2)
s++;
}
if(max == l)
break;
}
l = l1 + l2- max;
cout << l << endl;
}
return 0;
}