一直没看出来为什么报错啊。感觉rear没有越界啊。好奇怪哦!看了一下午了,蒙了
找到错误了 44行是赋值符号,写成等于了。。。
正确代码如下:
// // 广度优先 BFS
const int dx[4] = {1, 0, 0,-1};
const int dy[4] = {0, 1,-1, 0};
int maxAreaOfIsland(int** grid, int gridSize, int* gridColSize){
int max = 0, count = 0;
int row = gridSize;
int col = gridColSize[0];
int que[row * col][2], rear, front;
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
if(grid[i][j] == 0)
continue;
rear = 0, front = 0;
que[rear][0] = i; que[rear++][1] = j;
grid[i][j] = 0;
count = 0;
while(front < rear){
int x = que[front][0], y = que[front++][1];
count++;
for(int k = 0; k < 4; k++){
int mx = x + dx[k], my = y + dy[k];
if(mx >= 0 && mx < row && my >= 0 && my < col && grid[mx][my] == 1){
grid[mx][my] = 0;
que[rear][0] = mx; que[rear++][1] = my;
}
}
}
max = fmax(max,count);
}
}
return max;
}
你reard的值超出 row * rol了吧
报的故障不是超出索引范围吗