Kickdown
Time Limit: Unknown Memory Limit: Unknown
Total Submission(s): Unknown Accepted Submission(s): Unknown
https://uva.onlinejudge.org/i...
Accepted Code
// Author : Weihao Long
// Created : 2017/12/21
#include "stdio.h"
#include "string.h"
#define MAX 220
int main() {
char a[MAX], b[MAX];
memset(a, '0', sizeof(a));
memset(b, '0', sizeof(b));
int ans1, ans2;
while (scanf("%s%s", &a, &b) != EOF) {
int lena = strlen(a), lenb = strlen(b), flag = 0;
for (int i = 0; i <= lena; i++) {
int tag = 1;
for (int k = i, kk = 0; k < lenb + i; k++, kk++) {
if (a[k] + b[kk] - '0' > '3') {
tag = 0;
break;
}
}
if (tag) {
flag = i;
break;
}
}
ans1 = lenb + flag;
if (ans1 < lena)
ans1 = lena;
for (int i = 0; i <= lenb; i++) {
int tag = 1;
for (int k = i, kk = 0; k < lena + i; k++, kk++) {
if (b[k] + a[kk] - '0' > '3') {
tag = 0;
break;
}
}
if (tag) {
flag = i;
break;
}
}
ans2 = lena + flag;
if (ans2 < lenb)
ans2 = lenb;
printf("%d\n", ans1 < ans2 ? ans1 : ans2);
memset(a, '0', sizeof(a));
memset(b, '0', sizeof(b));
}
return 0;
}
Notes
题意:
给出两个长条,且每列高度只能为 '1' 或 '2',需要将它们放入一个高度为 '3' 的容器,问能容纳它们的最短容器长度。
(注意不能翻转或旋转)
思路:
把两条的头对齐,定其中一条挪动另外一条,挪到满足题目要求为止。
然后互换位置再来一次,比较两个答案,取小的。
感受:
读题不仔细,先做的时候以为可以翻转,做麻烦了不说,还提交错误。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。