社区讨论

求条P2802(玄关)

学术版参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mceuaz08
此快照首次捕获于
2025/06/27 21:20
8 个月前
此快照最后确认于
2025/11/04 06:56
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int n,m,nmap[14][14],sx,sy,ans = 1e9,dx[4] = {0,1,0,-1},dy[4] = {1,0,-1,0};
bool vis[14][14][7];
void dfs(int x,int y,int h,int t)
{
	if (h <= 0)
	{
		return ;
	}
	vis[x][y][h] = 1;
	if (nmap[x][y] == 3)
	{
		ans = min(ans,t);
		vis[x][y][h] = 0;
		return ;
	}
	if (nmap[x][y] == 4)
	{
		h = 6;
	}
	for (int i = 0;i < 4;i++)
	{
		int gx = x + dx[i],gy = y + dy[i];
		if (gx > 0 && gx <= n && gy > 0 && gy <= m && !vis[gx][gy][h - 1] && nmap[gx][gy])
		{
			dfs(gx,gy,h - 1,t + 1);
		}
	}
	vis[x][y][h] = 0;
	
}
int main()
{
	cin >> n >> m;
	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= m;j++)
		{
			cin >> nmap[i][j];
			if (nmap[i][j] == 2)
			{
				sx = i;
				sy = j;
			}
		}
	}
	dfs(sx,sy,6,0);
	cout << (ans == 1e9?-1:ans);
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...