トピック
Vasyaは最近入力し、インターネットにログオンするために学んできました。彼はすぐにチャットルームに入って、みんなに挨拶することを決めました。Vasyaは単語Sを入力しました。Vasyaは、いくつかの文字がタイプされた単語から削除することができれば、それは単語「こんにちは」になったように挨拶するために管理していると考えられます。Vasyaタイプ単語「ahhellllloou」場合たとえば、彼が挨拶と考えられるだろう、と彼のタイプ「hlelo」場合、Vasyaは誤解だと考えられるだろうし、彼が挨拶して管理していませんでした。Vasyaが与えられた単語Sで挨拶するために管理するかどうかを決定します。
入力
最初で唯一の行は、Vasyaが入力された単語のを、含まれています。この
言葉小さなラテン文字のconsisitsを、その長さが1ということはあまりありません
、それ以上100文字以下。
出力
Vasyaが「YES」の印刷、挨拶するために管理している場合、それ以外の場合は「NO」を印刷します。
例
入力
ahhellllloou
出力
はい
入力
プログラム
出力
番号
ただ、マークは、例えば、「メイク後、唯一のタグの後にそこに入力されたマークh」を」Eを入力するために、その中に各入力「こんにちは」の文字を考えるように、この質問を見た'、有効ですように、文字が完全な入力が「こんにちは」。かどうかを確認するために、最終的な判断を行うために、そうやっているの背後に
長い時間のための結果デバッグコードデバッガは、サンプルは、生と死を通過...ではない
、私は私の漢漢のコードを囲みます
**错误代码**
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ch;
int flag = 0;
while (cin >> ch)
{
if (ch == 'h' && flag == 0)
flag++;
if (ch == 'e' && flag == 1)
flag ++;
if (ch == 'l' && flag == 2)
flag ++;
if (ch == 'l' && flag == 3)//输入一次‘l’会被运算两次,导致代码错误
flag ++;
if (ch == 'o' && flag == 4)
{
flag ++;
break;
}
}
if (flag == 5)
cout << "YES" << endl;
if(flag!=5)
cout << "NO" << endl;
return 0;
}
ギャング補正することで、コードは、問題があることが明らかです
この問題のために、別の方法では、文字列マッチングを行うために使用することができます!!!!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int n,k=0;
char str[5] = { 'h','e','l','l','o' };
char a[105];
cin >> a;
n = strlen(a);
for (int i = 0; i < n; i++)
{
if (a[i] == str[k])k++;
if (k == 5)break;
}
if (k == 5)cout << "YES" << endl;
else cout << "NO" << endl;
return 0;
}
DOの質問は、ああ、思考の転換に本当に重要な注意を払う必要があります。一つの方法どこに、そして別の角度からの思考についての思考を開始し、棚ぼた萌えがあるでしょう//