请问蜜汁36分是怎么回事,求救!
  • 板块P2802 回家
  • 楼主i_am_a_joker
  • 当前回复6
  • 已保存回复6
  • 发布时间2020/7/28 22:30
  • 上次更新2023/11/6 21:55:00
查看原帖
请问蜜汁36分是怎么回事,求救!
245089
i_am_a_joker楼主2020/7/28 22:30
#include <bits/stdc++.h>
using namespace std;
int a[505][505],n,m,ans = 999999;
bool vis[505][505];
void dfs(int x,int y,int sum,int mouse) {
  if(mouse==0 || a[x][y]==0 || vis[x][y]==0) return;   
  if(x<1 || x>n || y<1 || y>m) return;   
  if(sum > ans) return;   
  if(a[x][y] == 3) {   
    ans = min(ans,sum); 
    return;
  }
  int mouse1 = mouse-1;
  if (a[x][y] == 4) mouse1 = 5; 
  vis[x][y] = false;   
  dfs(x-1,y,sum+1,mouse1);   
  dfs(x+1,y,sum+1,mouse1);  
  dfs(x,y-1,sum+1,mouse1);   
  dfs(x,y+1,sum+1,mouse1);  
  vis[x][y] = true;   
}
int main() {
  scanf("%d%d",&n,&m);
  int x,y;
  for(int i=1; i<=n; i++)
    for(int j=1; j<=m; j++)
	{
        scanf("%d",&a[i][j]);
      	if (a[i][j] == 2)
	  	{
	  		x=i;
			y=j; 
	  	}   
    }
  dfs(x,y,0,6);
  if (ans == 999999) printf("-1");   
  else printf("%d",ans);
}

自己debug没看出来呀……

2020/7/28 22:30
加载中...