旅游景区管理系统
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: 在此添加控件通知处理程序代码
}