はじめに
閲覧ありがとうございます。AtCoderさんの過去問題で、自分のコードのどこが間違っているのかどうしてもわかりません。間違い箇所の指摘、試すべき事柄の指摘など、なんでもよいのでご教授願います!
問題文
AtCoder Beginners Selectionにも掲載されている、ABC049のC問題、白昼夢です。
https://atcoder.jp/contests/abs/tasks/arc065_a
発生している問題・エラーメッセージ
ACがとれない。
ABC049以前はテストケースが公開されていないようなので、サンプルの他に自作の文字列で何度も試しましたが、正常でした。
該当のソースコード
c++
1#include <bits/stdc++.h> 2 3using namespace std; 4int main() { 5 string S; //入力 6 cin >> S; 7 string a; //Sから末尾を3文字切り取った文字列 8 int n; //Sの文字長 9 10 while(true) { // 11 if(S.size() == 0) { //Sの文字長が0、すなわちSが全て4単語でできていたらYES 12 cout << "YES" << endl; 13 return 0; 14 } 15 n = S.size(); //Sの文字長を取得 16 a = S.substr(n-3, 3); //Sの末尾3文字を取得 17 if(a == "eam") { //Sの末尾3文字を判定、合致したらその単語の長さだけ消去 18 S.erase(n-5, 5); 19 } else if(a == "mer") { 20 S.erase(n-7, 7); 21 } else if(a == "ase") { 22 S.erase(n-5, 5); 23 } else if(a == "ser") { 24 S.erase(n-6, 6); 25 } else { //当てはまらなかったらNO 26 cout << "NO" << endl; 27 return 0; 28 } 29 } 30 31 return 0; 32}
その他
他の方のソースコードをパクれば解決できるのですが、自分のコードの間違いを見つけたいので質問させていただきます。
switch文は文字に使えないようなので、if文を重ねましたが、これもカッコ悪いですよね。。。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/22 03:12 編集
2020/05/22 12:13