UVa 1588 Kickdown

来源:互联网 发布:小公司网络组建 编辑:程序博客网 时间:2024/05/18 02:40

原题传送


方法:先固定一个字符串,再移动另一个字符串

C代码:(由于UVA的C编译器不支持C99标准,请使用C++提交)

#include <stdio.h>#include <string.h>int main(void) {char c1[105], c2[105];while(~scanf("%s%s", c1, c2)) {int ans = strlen(c1) + strlen(c2);int j;for(int i = 0; i < strlen(c1); i++) {for(j = 0; j < strlen(c2) && i + j < strlen(c1); j++)if (c1[i + j] + c2[j] - 96 > 3)break;if(j == strlen(c2) || i + j == strlen(c1)) {ans = strlen(c1) + strlen(c2) - j;break;}}for(int i = 0; i < strlen(c2); i++) {for(j = 0; j < strlen(c1) && i + j < strlen(c2); j++)if (c2[i + j] + c1[j] - 96 > 3)break;if(j == strlen(c1) || i + j == strlen(c2)) {ans = strlen(c1) + strlen(c2) - j > ans ? ans : strlen(c1) + strlen(c2) - j;break;}}printf("%d\n", ans);}return 0;}

C++代码:

#include <bits/stdc++.h>using namespace std;int main(void) {string a, b;while(cin >> a >> b) {int ans = a.size() + b.size();int j;for(int i = 0; i < a.size(); i++) {for(j = 0; j < b.size() && i + j < a.size(); j++)if(a[i + j] + b[j] - 96 > 3)break;if(j == b.size() || i + j == a.size()) {ans = a.size() + b.size() - j;break;}}for(int i = 0; i < b.size(); i++) {for(j = 0; j < a.size() && i + j < b.size(); j++)if(b[i + j] + a[j] - 96 > 3)break;if(j == a.size() || i + j == b.size()) {ans = min(int(a.size() + b.size() - j), ans);break;}}printf("%d\n", ans);}return 0;}


0 0
原创粉丝点击