質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

3033閲覧

Atcoder ABC049C - 白昼夢 が解けないです。

udo0n

総合スコア1

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/08/17 16:03

前提・実現したいこと

Atcoder ABC049C - 白昼夢 を解きたいです。
自分と同じアルゴリズムで解いている他者のacコードと照らし合わせながら確認しても自分のソースコードがWAの原因がわかりません。
どこが原因でWAになっているのか教えていただきたいです。

#自分のwaソースコード

c++

1#include<iostream> 2#include<string> 3#include<stdio.h> 4 5using namespace std; 6int main() { 7 int st = 0; 8 int flag = 0; 9 10 string s; 11 cin >> s; 12 while (1) { 13 if (s.size() == st) { 14 flag = 1; break; 15 } 16 else if ((s.size() - st) < 5) { 17 break; 18 } 19 else if (s.substr(st, 5) == "dream") { 20 //dreamer と判定 21 if (((s.substr((st + 5), 2) == "er") && (s.substr((st + 5), 5)) != "erase")) { 22 st += 7; 23 } 24 //dream と判定 25 else if((s.substr((st+5),2)!="er")||(s.substr((st+5),5)=="erase") ){ 26 st += 5; 27 } 28 } 29 else if (s.substr(st, 5) == "erase") { 30 //eraser と判定 31 if (s.substr((st + 5), 1) == "r") { 32 st += 6; 33 } 34 //erase と判定 35 else if(s.substr(st+5,1)!="r") { 36 st += 5; 37 } 38 } 39 else { 40 break; 41 } 42 } 43 44 if (flag == 1) { 45 cout << "yes" << endl; 46 } 47 else { 48 cout << "no" << endl; 49 } 50 return 0; 51}

#ほかの方のACソースコード

#include <stdio.h> #include <string> using namespace std; int main(void){ string s; cin >> s; int start_point = 0, flag = 1; // cout << s.length() << endl; // cout << s.substr(start_point, 5) << endl; while(1) { if(s.length() == start_point){break;} else if(s.length() - start_point < 5){ flag = 0; break; } //dreamがつく場合 else if(s.substr(start_point, 5) == "dream"){ //dream単体だと判定 if(s.substr(start_point+5, 2) != "er" || s.substr(start_point+5, 5) == "erase" ){ start_point += 5; } //dreamer単体だと判定 else if(s.substr(start_point+5, 2) == "er" && s.substr(start_point+5, 5) != "erase"){ start_point += 7; } } //eraseがつく場合 else if(s.substr(start_point, 5) == "erase"){ //erase単体だと判定 if(s.substr(start_point+5, 1) != "r"){ start_point += 5; } //eraser単体だと判定 else if(s.substr(start_point+5, 1) == "r"){ start_point += 6; } } else{ flag = 0; break; } } if(flag == 1){cout << "YES" << endl;} else{cout << "NO" << endl;} }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

出力を大文字に直してatcoderに提出してみたところ、ACでした

投稿2020/08/17 17:31

yusuke-fusegi

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

udo0n

2020/08/20 08:11

回答ありがとうございました、、!
guest

0

ベストアンサー

出力
S=T とすることができる場合 YES を、そうでない場合 NO を出力せよ。

出力が半角になってるからではないでしょうか。

cout << "yes" << endl;

cout << "YES" << endl;

投稿2020/08/17 16:53

mjk

総合スコア303

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

udo0n

2020/08/20 08:11

その通りでした、、、、ありがとうございました、、、!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問