好不容易码好了,输出错误
  • 板块P2802 回家
  • 楼主幽灵特工
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/8/2 13:28
  • 上次更新2023/11/6 21:31:17
查看原帖
好不容易码好了,输出错误
332549
幽灵特工楼主2020/8/2 13:28

很抱歉我的注释少了

#include<bits/stdc++.h>
using namespace std;
int maps[9][9]={0};
struct NODE{
	int x,y,k,hp;
}now,sum;
int zl[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
queue<NODE> q;
int visit[9][9]={0};
int main(){
	int n,m;
	int sx,sy;
	cin>>n>>m; 
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>maps[i][j];
			if (maps[i][j]==2){
				sx=i;
				sy=j;
			}
		}
	}
	//读入数据和开始点; 
	q.push((NODE){sx,sy,0,6});
	visit[sx][sy]=6;
	bool unfinished = true;
	while(unfinished&&(!q.empty())){
		now=q.front();
		q.pop();
		for(int i=0;i<4&&unfinished;i++){
			if(maps[now.x+zl[i][0]][now.y+zl[0][i]]&&visit[now.x+zl[i][0]][now.y+zl[0][i]]<now.hp-1){
				sum.x=now.x+zl[i][0];
				sum.y=now.y+zl[0][i];
				sum.k=now.k+1;
				sum.hp=maps[sum.x][sum.y]==4?6:now.hp-1;
				visit[sum.x][sum.y]=sum.hp;
				if(maps[sum.x][sum.y]==3)unfinished=false;
				q.push(sum);
			}
		}
	}
	if(unfinished)cout<<-1<<endl;
	else cout<<sum.k;
}
2020/8/2 13:28
加载中...