首页 / 算法 / 算法分析与设计:搜索(最少步数)
算法分析与设计:搜索(最少步数)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了算法分析与设计:搜索(最少步数),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1528字,纯文字阅读大概需要3分钟。
内容图文
题目描述
这有一个迷宫,有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,1
0表示道路,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
#include<iostream>
using namespace std;
int min1 = 10000000;
int c = 0;
int h[4];
int a[4] = { -1, 0, 0, 1 };
int b[4] = { 0, 1, -1, 0 };
int map[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
};
bool judge(int x, int y)
{
if (0 <= x&&x <= 8 && 0 <= y&&y <= 8 && map[x][y] == 0)return true;
return false;
}
void dns(int x, int y)
{
if (x == h[2] && y == h[3])
{
if (c < min1)min1 = c;
}
else
{
for (int i = 0; i < 4; i++)
{
if (judge(x + a[i], y + b[i]))
{
map[x + a[i]][y + b[i]] = 1;
c++;
dns(x + a[i], y + b[i]);
map[x + a[i]][y + b[i]] = 0;
c--;
}
}
}
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> h[0] >> h[1] >> h[2] >> h[3];
dns(h[0], h[1]);
cout << min1 << endl;
map[h[2]][h[3]] = 0;
c = 0;
min1 = 10000000;
}
return 0;
}
内容总结
以上是互联网集市为您收集整理的算法分析与设计:搜索(最少步数)全部内容,希望文章能够帮你解决算法分析与设计:搜索(最少步数)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。