ひとりも見捨てないことを、あきらめない

学校教育、社会教育、数学、技術家庭科、Youtube、EdTech、ICT、プログラミング、その他

やった!!成功!! 11/12 火

 前回の記事で、「メモリ不足で、ダメだあああ」と言っていた問題について、次のとおりプログラムを作成できました。ポインタの挙動については、まだまだ修行が必要だと感じています。

 

サンプルプログラム(高瀬作成)

#include <bits/stdc++.h>
using namespace std;

int kensa(string *tmp, int num, int pt, int ll) {
 int res;
 string s;
 if (pt==ll) return 1;

 // case "dream"
 s = (*tmp).substr(pt,5);
 if (s=="dream") {
  res = kensa(tmp,num+1,pt+5, ll);
  if (res > 0) return res;
 }

 // case "dreamer"
 s = (*tmp).substr(pt,7);
 if (s=="dreamer") {
  res = kensa(tmp,num+1,pt+7, ll);
  if (res > 0) return res;
 }

 // case "erase"
 s = (*tmp).substr(pt,5);
 if (s=="erase") {
  res = kensa(tmp,num+1,pt+5, ll);
  if (res > 0) return res;
 }

 // case "eraser"
 s = (*tmp).substr(pt,6);
 if (s=="eraser") {
  res = kensa(tmp,num+1,pt+6, ll);
  if (res > 0) return res;
 }
 return 0;
}

int main() {
 int res;
 string S;
 cin >> S;

 res = kensa(&S,1,0,S.size());
 
 if (res > 0 ) cout << "YES" << endl; else cout << "NO" << endl;
}

 

プログラムの提出先

f:id:takase_hiroyuki:20191110113631p:plain