虽然已经通过了,但还是想说一下

P1746 离开中山路

lzqy_ @ 2020-04-21 10:16:53

已经是第n次了,scanf大红大紫,换成cin就AC了

是评测机的锅还是scanf锅啊…QwQ


by stansxt @ 2020-04-21 10:21:13

scanf写错了吧


by asasas @ 2020-04-21 10:23:21

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

struct p
{
  int x,y;
} W,M;
queue<p>q;
int a[1001][1001];
bool k[10000][10000];
int p[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};
void BFS()
{
  int len=1,ans=0;
  while(!q.empty())
  {
    for(int i=0; i<len; i++)
    {
      if(q.front().x==W.x&&q.front().y==W.y)
      {
        printf("%d",ans);
        return ;
      }
      for(int i=0; i<4; i++)
      {
        if(a[q.front().x+p[i][0]][q.front().y+p[i][1]]&&!k[q.front().x+p[i][0]][q.front().y+p[i][1]])
        {
          M.x=q.front().x+p[i][0];
          M.y=q.front().y+p[i][1];
          q.push(M);
          k[M.x][M.y]=1;
        }
      }
      q.pop();
    }
    ans++;
    len=q.size();
  }
}
int main()
{
  int n;
  char x;
  scanf("%d",&n);
  getchar();
  for(int i=1; i<=n; i++)
  {
    for(int j=1; j<=n; j++)
    {
      scanf("%c",&x);
      a[i][j]=(x=='0');
    }
    getchar();
  }
  scanf("%d%d%d%d",&M.x,&M.y,&W.x,&W.y);
  q.push(M);
  k[M.x][M.y]=1;
  BFS();
  return 0;
}

楼主的code


by return20071007HNO3 @ 2020-04-21 10:26:38

哦这不是经典锅吗


by K0stlin @ 2020-04-21 10:27:09

@栾竹清影 字符读入要用cin或者用scanf读字符串的第一位


by 童年如作业 @ 2020-04-21 10:27:24

scanf("%c",&x);

直觉告诉我,这里会有问题(即使我没看题)


by K0stlin @ 2020-04-21 10:27:30

的确挺经典


by Trinitrotoluene @ 2020-04-21 10:27:45

for(int i=1; i<=n; i++)
  {
    for(int j=1; j<=n; j++)
    {
      scanf("%c",&x);
      a[i][j]=(x=='0');
    }
    getchar();
  }

如果结尾是 '/r/n' 怎么办


by Micro_Seven @ 2020-04-21 10:28:00

不懂啊。。。蒟蒻来凑热闹


by return20071007HNO3 @ 2020-04-21 10:28:42

@栾竹清影 do scanf("%c",&x);while(!isdigit(x));


by return20071007HNO3 @ 2020-04-21 10:28:52

AC了真棒


上一页 | 下一页