WAx4,求助
查看原帖
WAx4,求助
304211
精神小伙!楼主2021/8/18 20:50
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
int n,m;
int HP=6;
int a[10][10];
bool vis[10][10];
int sx,sy,ex,ey;
int dx[4]={-1,1,0,0},
    dy[4]={0,0,-1,1};
int ans=0x3f;
void dfs(int x,int y,int step,int HP)
{
    if(HP==0)       return ;
	if(a[x][y]==4)  HP=6;
	if(x==ex&&y==ey)
	{
		if(ans>step) ans=step;
		return ;
	}
	for(int i=0;i<4;++i)
	{
		int tx=x+dx[i],ty=y+dy[i];
		if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&vis[tx][ty]==0&&a[tx][ty]==1)
		{
			vis[tx][ty]=1;
			dfs(tx,ty,step+1,HP-1);
			vis[tx][ty]=0;
		}
	}
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
        {
        	cin>>a[i][j];
        	if(a[i][j]==2)
        	{
        		sx=i;sy=j;
        		a[i][j]=1;
			}
			if(a[i][j]==3)
        	{
        		ex=i;ey=j;
        		a[i][j]=1;
			}
		}   
    dfs(sx,sy,0,HP);
    if(ans!=0x3f) cout<<ans<<endl;
    else          cout<<-1<<endl;
	return 0;
}
2021/8/18 20:50
加载中...