九度OJ 1006:ZOJ問題(再帰)
時間制限:1秒
メモリ制限:32メガ
特殊問題:いいえ
提出:18621
解決:3197
タイトルの説明:
与えられた文字列('z','o','j'の3文字のみを含む)について、ACできるかどうかを判断します.
ACの有無のルールは次のとおりです.
1.zojエネルギーAC;
2.文字列形式がxzojxであれば、ACも可能であり、xはN個の'o'であってもよいし、空であってもよい.
3.azbjcがAC可能であれば、azbojacもAC可能であり、そのうちa,b,cはN個の'o'または空である.
入力:
入力には、行ごとに'z','o','j'の3つの文字のみを含む文字列があり、文字列の長さは1000以下です.
出力:
与えられた文字列の場合、ACが可能であれば「Accepted」と出力し、そうでなければ「Wrong Answer」と出力します.
サンプル入力:
サンプル出力:
ソース:
2010年浙江大学のコンピュータとソフトウェア工学の研究の生気試験の本題
考え方:
ルール2 3から,再帰的に解く必要があることは明らかであり,難しくはないが,境界条件判断は誤りやすい.
私は何度かWAを通過した.
コード:
メモリ制限:32メガ
特殊問題:いいえ
提出:18621
解決:3197
タイトルの説明:
与えられた文字列('z','o','j'の3文字のみを含む)について、ACできるかどうかを判断します.
ACの有無のルールは次のとおりです.
1.zojエネルギーAC;
2.文字列形式がxzojxであれば、ACも可能であり、xはN個の'o'であってもよいし、空であってもよい.
3.azbjcがAC可能であれば、azbojacもAC可能であり、そのうちa,b,cはN個の'o'または空である.
入力:
入力には、行ごとに'z','o','j'の3つの文字のみを含む文字列があり、文字列の長さは1000以下です.
出力:
与えられた文字列の場合、ACが可能であれば「Accepted」と出力し、そうでなければ「Wrong Answer」と出力します.
サンプル入力:
zoj
ozojo
ozoojoo
oozoojoooo
zooj
ozojo
oooozojo
zojoooo
サンプル出力:
Accepted
Accepted
Accepted
Accepted
Accepted
Accepted
Wrong Answer
Wrong Answer
ソース:
2010年浙江大学のコンピュータとソフトウェア工学の研究の生気試験の本題
考え方:
ルール2 3から,再帰的に解く必要があることは明らかであり,難しくはないが,境界条件判断は誤りやすい.
私は何度かWAを通過した.
コード:
#include <stdio.h>
#define N 1000
int main(void)
{
int i, a, b, c;
char s[N+1];
while (scanf("%s", s) != EOF)
{
a = b = c = 0;
i = 0;
while (s[i] == 'o')
{
i ++;
a ++;
}
if (s[i] != 'z')
{
printf("Wrong Answer
");
continue;
}
i++;
while (s[i] == 'o')
{
i ++;
b ++;
}
if (s[i] != 'j')
{
printf("Wrong Answer
");
continue;
}
i++;
while (s[i] == 'o')
{
i ++;
c ++;
}
if (s[i] != '\0')
{
printf("Wrong Answer
");
continue;
}
//if (c == a+a*(b-1) && b > 0)
while (b > 1)
{
b --;
c -= a;
}
if (a == c && a >= 0 && b == 1)
printf("Accepted
");
else
printf("Wrong Answer
");
}
return 0;
}
/**************************************************************
Problem: 1006
User: liangrx06
Language: C
Result: Accepted
Time:30 ms
Memory:912 kb
****************************************************************/