bfs出错了???
查看原帖
bfs出错了???
316358
不知名用户楼主2020/8/6 14:52
#include<stdio.h>
#include<string.h>
using namespace std;
int sum, row, col;
char a[100][101];
int q[100][2];
int x[4] = {1, -1, 0, 0};
int y[4] = {0, 0, 1, -1};
bool mark[100][100];
void bfs(int a1, int b1)
{
  int head, tail, rows, cols, i;
  head = 0;
  tail = 1;
  q[1][0] = a1;
  q[1][1] = b1;
  do
  {
    head++;
    for(i=0;i<4;i++)
    {
      rows = q[head][0] + x[i];
      cols = q[head][1] + y[i];
      if(rows>=0&&rows<=row&&cols>=0&&cols<=col)
      if(mark[rows][cols]&&a[rows][cols]>='0'&&a[rows][cols]<='9')
      {
        tail++;
        mark[rows][cols] = 0;
        q[tail][0] = rows;
        q[tail][1] = cols;
      }
    }
  }while(head<tail);
}
int main()
{
  int i, j, sum;
  scanf("%d%d", &row, &col);
  memset(mark,1,sizeof(mark));
  sum = 0;
  for(i=0;i<row;i++)
    scanf("%s", a[i]);
  for(i=0;i<row;i++)
    for(j=0;j<col;j++)
      if(a[i][j]>='1'&&a[i][j]<='9'&&mark[i][j])
        {
          mark[i][j] = 0;
          bfs(i, j);
          sum++;
        }
  printf("%d", sum);
  return 0;
}

有细胞输出1,没细胞输出0.咋回事儿?

2020/8/6 14:52
加载中...