チャットルームには演習します

トピック

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の質問は、ああ、思考の転換に本当に重要な注意を払う必要があります。一つの方法どこに、そして別の角度からの思考についての思考を開始し、棚ぼた萌えがあるでしょう//

公開された14元の記事 ウォン称賛18 ビュー1666

おすすめ

転載: blog.csdn.net/SDAU_LGX/article/details/104760764