旅游景区管理系统
1.旅游景区导航
2.搜索最短路径
3.prim铺设电路
4.代码介绍和展示
旅游路线导航
本系列为武汉某大学课设,只是学习之用
功能要求:
算法解释:
使用了改进版的深度优先搜索算法,
改进点如下:
1.通过在搜索过程中判断是否已找到了全部景点来实现无回路的功能
2.因为在过程中进行搜索,通过不退出,来找到全部景点
扩展功能:
1.消息盒子提示
2.通过打印各个建议路线,实现美观
例子
代码块展示
//功能二:景点导航
int Vis; //起点
int visited[M];
CString Information1;
CString X("建议路线: "), Y("\r\n"), Z(" -----> ");
int Route[M]; //要注意的是编号从0开始的,记录路线
int number; //记录是否全部走完
void CMFCApplication2Dlg::dfs(int i)
{
visited[i] = 1;
Route[++number] = i;
for (int j = 0; j < S.count; j++)
{
if (visited[j] == 0 && S.mat.m[i][j]) //dfs搜索
{
dfs(j);
}
}
if (number == S.count - 1 && Route[0] == Vis) //打印可行解
{
Information1 += X;
for (int j = 0; j < S.count - 1; j++)
{
Information1 += S.Pname[Route[j]] + Z;
}
Information1 += S.Pname[Route[S.count - 1]] + Y + Y;
SetDlgItemText(SCREEN, Information1);
visited[i] = 0; //向前回溯
Route[number] = -1;
number--;
}
else
{
visited[i] = 0; //向前回溯
Route[number] = -1;
number--;
}
}
void CMFCApplication2Dlg::OnBnClickedButton2()
{
memset(visited, 0, sizeof(visited));
memset(Route, -1 , sizeof(Route)); //-1表示无前驱节点,即无法被访问
number = -1;
Vis = GetDlgItemInt(IDC_EDIT8);
dfs(Vis);
MessageBox("路径已被加载");
Information1.Empty(); //用来反复激活使用
// TODO: 在此添加控件通知处理程序代码
}