社区讨论
求条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 条回复,欢迎继续交流。
正在加载回复...