ページ 11

(c++)getcharについて

Posted: 2015年6月07日(日) 19:03
by イタトモ
久しぶりの投稿となります。
AtCoder Typical Contest001の問題Aの際に解けない問題がありました。
コンテスト終了後ほかの方のコードを拝見しますと、わからない箇所がありました。
コンテスト中に解けた範囲の(sample testは通りました)ものに訂正をして通せましたが
理解しきれていません。

コード:

#include <bits/stdc++.h>
using namespace std;
  int W,H;
  int sx,sy,gx,gy;
  string line;
  char maze[600][600];
  bool reached[600][600]={0};

void search(int x,int y,char maze[][600]){
  if(x<0||W <= x || y<0||H<=y||maze[x][y]=='#') return;

  if(reached[x][y]) return;

  reached[x][y] =1;

  search(x+1,y,maze);
  search(x-1,y,maze);
  search(x,y+1,maze);
  search(x,y-1,maze);
}

int main(){
//Hは縦Wは横
  cin>>H>>W;
//迷路読み込みsはスタートgはゴール
  getchar();//ここと
  for(int i=0;i<H;i++){
    for(int j=0;j<W;j++){
   scanf("%c",&maze[j][i]);
      if(maze[j][i]=='s'){
        sx=j;
        sy=i;
      }else if(maze[j][i]=='g'){
        gx=j;
        gy=i;
		    }
      }  getchar();//ここです。
  }
 
 search(sx, sy,maze);//DFS

  if(reached[gx][gy]==1){
    cout<<"Yes"<<endl;
  }else{
    cout<<"No"<<endl;
  }
}
上記のコードの二つのgetchar();です。
つたないコードですが、よろしくお願いします。
ちなみに、getchar();なしでもsample testはとおりました。(たまたまかもしれませんが)

Re: (c++)getcharについて

Posted: 2015年6月07日(日) 19:22
by みけCAT
イタトモ さんが書きました:上記のコードの二つのgetchar();です。
入力の改行文字を読み飛ばしています。
イタトモ さんが書きました:ちなみに、getchar();なしでもsample testはとおりました。(たまたまかもしれませんが)
詳しくみないとよくわかりませんが、多分たまたまでしょう。

Re: (c++)getcharについて

Posted: 2015年6月07日(日) 19:25
by イタトモ
10 10 ←ここと
s.........
#########.
#.......#.
#..####.#.
##....#.#.
#####.#.#.
g.#.#.#.#.
#.#.#.#.#.
#.#.#.#.#.
#.....#... ←ここですか?

Re: (c++)getcharについて

Posted: 2015年6月07日(日) 19:28
by イタトモ
10 10 ←ここと
s......... ←
#########.←
#.......#.←
#..####.#.←
##....#.#.←
#####.#.#.←
g.#.#.#.#.←
#.#.#.#.#.←
#.#.#.#.#.←
#.....#...←ここですね、すみません。

Re: (c++)getcharについて

Posted: 2015年6月07日(日) 19:29
by みけCAT
イタトモ さんが書きました:10 10 ←ここと
s......... ←
#########.←
#.......#.←
#..####.#.←
##....#.#.←
#####.#.#.←
g.#.#.#.#.←
#.#.#.#.#.←
#.#.#.#.#.←
#.....#...←ここですね、すみません。
はい。

Re: (c++)getcharについて

Posted: 2015年6月07日(日) 19:31
by イタトモ
わかりました!みけCATさんありがとうございました。