洛谷—— P1238 走迷宫

news/2025/2/12 15:10:49/

https://www.luogu.org/problem/show?pid=1238

题目描述

有一个m*n格的迷宫(表示有m行、n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点、结束点(起始点和结束点都是用两个数据来描述的,分别表示这个点的行号和列号)。现在要你编程找出所有可行的道路,要求所走的路中没有重复的点,走时只能是上下左右四个方向。如果一条路都不可行,则输出相应信息(用-l表示无路)。

输入输出格式

输入格式:

 

第一行是两个数m,n(1<m,n<15),接下来是m行n列由1和0组成的数据,最后两行是起始点和结束点。

 

输出格式:

 

所有可行的路径,描述一个点时用(x,y)的形式,除开始点外,其他的都要用“一>”表示方向。

如果没有一条可行的路则输出-1。

 

输入输出样例

输入样例#1:
5 6
1 0 0 1 0 1
1 1 1 1 1 1
0 0 1 1 1 0
1 1 1 1 1 0
1 1 1 0 1 1
1 1
5 6
输出样例#1:
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(2,5)->(3,5)->(3,4)->(3,3)->(4,3)->(4,4)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(2,5)->(3,5)->(3,4)->(4,4)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(2,5)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(3,4)->(3,3)->(4,3)->(4,4)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(3,4)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(3,4)->(4,4)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,4)->(2,4)->(2,5)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,4)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,4)->(4,4)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(4,3)->(4,4)->(3,4)->(2,4)->(2,5)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(4,3)->(4,4)->(3,4)->(3,5)->(4,5)->(5,5)->(5,6)
(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(4,3)->(4,4)->(4,5)->(5,5)->(5,6)


没有SJ,搜索顺序只能是 左 上 右 下
 1 #include <cstdio>
 2 
 3 int n,m,sx,sy,tx,ty;
 4 bool vis[15][15],flag;
 5 bool can_go[15][15];
 6 int fx[4]={0,-1,0,1};
 7 int fy[4]={-1,0,1,0};
 8 
 9 struct Type {
10     int x[2250],y[2250];
11     int cnt;
12 }ans;
13 
14 void DFS(int nowx,int nowy)
15 {
16     if(nowx==tx&&nowy==ty)
17     {
18         flag=1;
19         printf("(%d,%d)->",sx,sy);
20         for(int i=1; i<ans.cnt; ++i)
21             printf("(%d,%d)->",ans.x[i],ans.y[i]);
22         printf("(%d,%d)\n",ans.x[ans.cnt],ans.y[ans.cnt]);
23         return ;
24     }
25     for(int i=0; i<4; ++i)
26     {
27         int tox=nowx+fx[i],toy=nowy+fy[i];
28         if(tox<1||toy<1||tox>m||toy>n) continue;
29         if(vis[tox][toy]||!can_go[tox][toy]) continue;
30         vis[tox][toy]=1;
31         ans.x[++ans.cnt]=tox;
32         ans.y[ans.cnt]=toy;
33         DFS(tox,toy);
34         vis[tox][toy]=0;
35         ans.cnt--;
36     }
37 }
38 
39 inline void read(int &x)
40 {
41     x=0; register char ch=getchar();
42     for(; ch>'9'||ch<'0'; ) ch=getchar();
43     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
44 }
45 
46 int Aptal()
47 {
48     read(m),read(n);
49     for(int x,i=1; i<=m; ++i)
50       for(int j=1; j<=n; ++j)
51         read(x),can_go[i][j]=x;
52     read(sx),read(sy),read(tx),read(ty);
53     vis[sx][sy]=1; DFS(sx,sy);
54     if(!flag) puts("-1");
55     return 0;
56 }
57 
58 int Hope=Aptal();
59 int main(){;}

 

转载于:https://www.cnblogs.com/Shy-key/p/7496097.html


http://www.ppmy.cn/news/142570.html

相关文章

题目 2250: 蓝桥杯算法提高-秘密行动

题目 小D接到一项任务&#xff0c;要求他爬到一座n层大厦的顶端与神秘人物会面。这座大厦有一个神奇的特点&#xff0c;每层的高度都不一样&#xff0c;同时&#xff0c;小D也拥有一项特殊能力&#xff0c;可以一次向上跳跃一层或两层&#xff0c;但是这项能力无法连续使用。已…

【DP】poj2250

经典的lcs问题&#xff0c;然而却是得到了很多启发&#xff0c;当时并没有想到如果s[i]ss[j]就可以直接用dp[i-1][j-1]1转移&#xff0c;仔细想了一下&#xff0c;dp[i][j-1]和dp[i-1][j]一定是<dp[i-1][j-1]1的。如果i在之前的状态中被使用过&#xff0c;那么dp[i][j-1]dp[…

【LOJ2250】「ZJOI2017」仙人掌

【题目链接】 点击打开链接 【思路要点】 考虑给定的图为大小为 N 1 N1 N1 的点的菊花图的情况&#xff0c;记方案数为 d p N dp_N dpN​ &#xff0c;考虑最后一个儿子是否连边&#xff0c;则有转移 d p i d p i − 1 ( i − 1 ) d p i − 2 dp_idp_{i-1}(i-1)dp_{i-2} …

2023年的六一儿童节,愿我们永远热泪盈眶,永远保持童心,致我们终将逝去的青春!

六一儿童节&#xff0c;是一个属于孩子们的节日。在这一天&#xff0c;孩子们可以尽情地玩耍、享受快乐。然而&#xff0c;对于我们这些已经长大的人来说&#xff0c;六一儿童节却意味着一种回忆&#xff0c;一种怀念&#xff0c;一种青春的逝去。 小时候&#xff0c;我们总是…

(纪中)2250. NOIP

(File IO): input:noip.in output:noip.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ProblemSet 题目描述 你知道 N e w O r a n g e I n d u s t r y P a l a t a b l e New Orange Industry Palatable NewOrangeIndustryPalatable公司吗&#xff1f;这是老板 S…

【LeetCode】2250. Count Number of Rectangles Containing Each Point

基本上就是Binary Search 简单二分 因为题目的height只有100种可能&#xff0c;我的naive的想法是统计每个height的width&#xff0c;然后遍历到每个点(x, y)的时候&#xff0c;把height>y的每个width数组都二分查找一遍…… from collections import defaultdict from b…

洛谷P3258BZOJ3631DTOJ2250 [JLOI2014]松鼠的新家

洛谷P3258&&BZOJ3631&&DTOJ2250 [JLOI2014]松鼠的新家 题目题目描述输入格式输出格式样例样例输入样例输出 数据范围与提示 题解 题目 题目描述 松鼠的新家是一棵树&#xff0c;前几天刚刚装修了新家&#xff0c;新家有 n n n个房间&#xff0c;并且有 n − …

系统开发视角下的诊断 ———— 动力系统(P)诊断故障8

文章目录 P22XX 燃油和空气计量和辅助排放控制P23XX 点火系统或失火 P22XX 燃油和空气计量和辅助排放控制 P22XX Fuel and air metering and auxiliary emission controls DTC Number DTC Name Location P2200 NOx Sensor Circuit Bank 1 P2201 NOx Sensor Circuit Range/Perf…