求助!!!!
  • 板块P2802 回家
  • 楼主pengchengen
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/2 20:35
  • 上次更新2024/12/2 23:25:47
查看原帖
求助!!!!
1077293
pengchengen楼主2024/12/2 20:35

为啥第个一点跑不出来,88pts求助!

本蒟蒻打的dfs,不喜勿喷

#include<bits/stdc++.h>
using namespace std;
int n,m;
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
int maps[101][101];
int sx,sy;
int ans=INT_MAX;
int l;
void dfs(int x,int y,int hp){
	if(hp==0||l>m*n||l>ans) return; 
	if(maps[x][y]==3){
		ans=min(ans,l);
		return ;
	}
	if(maps[x][y]==4) hp=6;
	if(hp==1) return;
	for(int i=0;i<4;i++){
		int tx=x+dx[i];
		int ty=y+dy[i];
		if(tx<1||ty<1||tx>n||ty>m||maps[tx][ty]==0) continue;
		l++;
		dfs(tx,ty,hp-1);
		l--;
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>maps[i][j];
			if(maps[i][j]==2) sx=i,sy=j;
		}
	}
	dfs(sx,sy,6); 
	if(ans==INT_MAX) cout<<-1;
	else cout<<ans;
	return 0;
}
2024/12/2 20:35
加载中...