前提
AOJのITP1_9_A問題を解いています。
該当問題URL:https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_A
実現したいこと
while文を用いたプログラムを作成し、問題を解きたいです。
発生している問題・エラーメッセージ
while(1)と(while("END_OF_TEXT"))の2パターンのwhile文を用いたプログラムを作成しました。
しかし、(while("END_OF_TEXT"))の場合だと、実行時間の超過によりプログラムが強制終了されてしまいます。
なぜ、whileの中身を「1」以外の物にすると、実行時間が超過してしまうのでしょうか。
また、CIN入力によってtmpの中身を予め格納しておかないと、実行時間超過を起こすのでしょうか?
ご教示いただきたく存じます。
該当のソースコード
C++
11パターン目(while(1)の場合) 2################################ 3#include <iostream>4#include <string>5#include <algorithm>6using namespace std;7 8int main(){9 string str;10 cin >> str;11 transform(str.begin(), str.end(), str.begin(), ::tolower);12 13 int count=0;14 while(1){15 string tmp;16 cin >> tmp;17 if(tmp=="END_OF_TEXT") break;18 transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);19 if(str==tmp) count++;20 }21 cout << count << endl;22 return 0;23}24################################ 25 262パターン目(while("END_OF_TEXT")の場合)27################################ 28#include <iostream>29#include <string>30#include <algorithm>31using namespace std;32 33int main(){34 string str;35 cin >> str;36 transform(str.begin(), str.end(), str.begin(), ::tolower);37 38 int count=0;39 string tmp;40 while(tmp!="END_OF_TEXT"){41 cin >> tmp;42 transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);43 if(str==tmp) count++;44 }45 cout << count << endl;46 return 0;47}48################################ 49
試したこと
2パターン目の38行目から44行目を下記のように変更したところ、作動しました。
###############################################################
string tmp;
cin >> tmp;
while(tmp!="END_OF_TEXT"){
transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);
if(str==tmp) count++;
cin >> tmp;
}
###############################################################
CIN入力によってtmpの中身を予め格納しておかないと、実行時間超過を起こすのでしょうか?
補足情報(FW/ツールのバージョンなど)
長文駄文失礼しました。
分かりにくい質問で大変恐縮ですが、ご教示いただけませんでしょうか。
何卒よろしくお願いいたします。
0 コメント