文章
5
粉丝
221
获赞
12
访问
25.4k
#include<bits/stdc++.h>
using namespace std;
const int maxn = 30+5;
const int INF = 0x3f3f3f3f;
char mpt[maxn][maxn];
int dir[4][2]={0,1,1,0,-1,0,0,-1};
struct node{
int x,y;
node(int x, int y):x(x),y(y){}
};
int n,m,t;
bool bfs(int sx, int sy, int t){
// init
queue<node> q;
q.push(node(sx,sy));
mpt[sx][sy]='#';
bool flag; //true:filled; false:unfilled
//ending conditions: t<0
while(t--){
//注意这里需要保存q.size
//不可使用empty进行判断,这样的话就停不下来了
//因为t每次减1,都是只对当前的队列内的元素进行更新并更新为下一时刻的序列
int q_size = q.size();
while(q_size--){
node now = q.front();
q.pop();
for(int i=0;i<4;i++){
int xn = now.x + dir[i][0];
int yn = now.y + dir[i][1];
if(xn>=1 && xn<=n && yn>=1 && yn<=m && mpt[xn][yn]=='.'){
mpt[xn][yn] = '#';
...
登录后发布评论
暂无评论,来抢沙发