NYOJ-58 最少步数
最少步数
时间限制:3000 ms | 内存限制:65535 KB
难度:4
- 描写叙述
-
这有一个迷宫,有0~8行和0~8列:
1,1,1,1,1,1,1,1,1
1,0,0,1,0,0,1,0,1
1,0,0,1,1,0,0,0,1
1,0,1,0,1,1,0,1,1
1,0,0,0,0,1,0,0,1
1,1,0,1,0,1,0,0,1
1,1,0,1,0,1,0,0,1
1,1,0,1,0,0,0,0,1
1,1,1,1,1,1,1,1,10表示道路,1表示墙。
如今输入一个道路的坐标作为起点。再如输入一个道路的坐标作为终点,问最少走几步才干从起点到达终点?
(注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3。1)到(4,1)。)
- 输入
- 第一行输入一个整数n(0<n<=100),表示有n组測试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。 - 输出
- 输出最少走几步。
- 例子输入
-
2 3 1 5 7 3 1 6 7
- 例子输出
-
12 11
01.#include<iostream>02.#include<algorithm>03.usingnamespacestd;04.intr[9][9]={{1,1,1,1,1,1,1,1,1},{1,0,0,1,0,0,1,0,1},{1,0,0,1,1,0,0,0,1},{1,0,1,0,1,1,0,1,1},{1,0,0,0,0,1,0,0,1},{1,1,0,1,0,1,0,0,1},{1,1,0,1,0,1,0,0,1},{1,1,0,1,0,0,0,0,1},{ 1,1,1,1,1,1,1,1,1}};05.intn,a,b,c,d,m;06.voiddfs(intp,intq,ints)07.{08.if(r[p][q])return;09.if(p==c&&q==d)10.{11.m=min(s,m);12.return;13.}14.s++;15.r[p][q]=1;16.dfs(p-1,q,s);17.dfs(p+1,q,s);18.dfs(p,q-1,s);19.dfs(p,q+1,s);20.r[p][q]=0;21.}22.intmain()23.{24.25.cin>>n;26.while(n--)27.{28.m=10000;29.cin>>a>>b>>c>>d;30.dfs(a,b,0);31.cout<<m<<endl;32.}33.return0;34.}

浙公网安备 33010602011771号