UVa 1588 Kickdown
1716 ワード
原題転送
メソッド:1つの文字列を固定してから、別の文字列を移動します.
Cコード:(UVAのCコンパイラはC 99規格をサポートしていませんので、C++コミットを使用してください)
C++コード:
メソッド:1つの文字列を固定してから、別の文字列を移動します.
Cコード:(UVAのCコンパイラはC 99規格をサポートしていませんので、C++コミットを使用してください)
#include
#include
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
", ans);
}
return 0;
}
C++コード:
#include
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
", ans);
}
return 0;
}