使用以下代码读入数据
string s[N];
cin >> w >> h;
getchar();
for(int i=0;i<h;i++){
getline(cin,s[i]);
}
样例可以过,但是提交WA了八个,AC了两个 使用以下代码读入数据
char s[N][N];
cin >> w >> h;
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
cin >> s[i][j];
}
}
或者是
char s[N][N];
scanf("%d %d",&w,&h);
for(int i=0;i<h;i++){
scanf("%s",&s[i]);
}
都能通过代码,于是我便怀疑是测试点数据有误 对getline进行优化如下
string s[N][N];
cin >> w >> h;
string str="\n";
getline(cin,str);
for(int i=0;i<h;i++){
getline(cin,s[i]);
}
这样写也能过,这更加验证了我对测试点输入有误的猜想,于是我将原来使用WA的getline代码,输入地图时在11 9后加了几个空格,输出就错了
于是我猜测,可能是测试点在输入地图长宽时在后面多打了几个空格,导致使用getchar()没有读入换行符,反而把空格给读进去了