错误原因
while(!q.empty()){
}
修正
int days=q.size();
while(days--) {
}
思路
本题因为是向四周长草,属于层次扩散,所以使用BFS
- BFS使用的是队列,首先在输入的时候就将长草的地方加入到队列中,并且将其状态设置为已访问
- 因为这次扩散,不是寻找最短路,所以bfs的使用应该放在循环里
- 我错误的代码是一次循环的BFS写法,而扩散是每次循环都进行一次BFS,因此队列中元素的个数是在不停的变化的
完整代码
#include<iostream>
#include<queue>
using namespace std;
const int N=10000;
int n,m,k; //n行,m列,k个月
char Map[N][N];