AtCoder ABC049 C問題 白昼夢
初めて質問させていただきます。
atcoderの beginners selectionに掲載されている”白昼夢”という問題についての質問です。リンクを下に載せておきます。
白昼夢
#include<iostream> using namespace std; bool searchText(string s, int characterNum) { if (characterNum == s.size())return true; string a; string divide[] = { "erase","dream","eraser","dreamer" }; int j = 5; for (int i = 0; i < 4; i++) { if (i == 2)j++;//6文字の時jをプラス1 if (i == 3)j++;//7文字の時さらにプラス a = s.substr(characterNum, j); if (a.size() < 5)return false; if (a == divide[i]) {//a=="erase" if (searchText(s, characterNum + j)) return true; } } return false; } int main() { string s; cin >> s; if (searchText(s, 0))cout << "YES"; else cout << "NO"; return 0; }
この問題について自分なりにコードを書いて提出しましたが、テストケース19のうち13がメモリ制限超過となってしまいます。
サイトに載っているサンプル入力例以外の自分の思いつく限りのサンプル入力についても試してみましたが、何の問題もなく動作しているため、何がいけないのかがよくわかりません。
間違い個所などあれば、ご教授いただきたいです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー