目录
“
这个小案例的重难点就是用递归列出全排列,还有一个注意的事项就是防止生成的随机坐标不能重复🤔
”

一、预览
还是老样子,先上代码⬇️
1. 测试文件(test.c)
#include"game.h"
void menu()
{
printf("**************************\n");
printf("******** 1.play ********\n");
printf("******** 0.exit ********\n");
printf("**************************\n");
}
void game()
{
int city[5] = { 0 }; //数组五个元素代表五个城市
int citys[5][5] = { 0 }; //存放两两城市的距离
Initcity(city); //生成随机坐标,放在city数组中
dest_city(city,citys); //计算两两城市的距离
MIN_dest(citys); //找出最短路径并打印
}
void test()
{
srand((unsigned int)time(NULL)); //生成随机数
int input = 0;
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while (input);
}
int main()
{
system("color 0B"); //设置颜色(可略)
test();
return 0;
}
2. 函数的声明(game.h)
#pragma once
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<memory.h>
void Initcity(int *city);
void dest_city(int* city, int citys[5][5]);
void MIN_dest(i

该博客介绍了一个C语言编程案例,涉及生成不重复的城市坐标、记录两两城市距离、全排列算法(包括回溯和简单递归方法)寻找最短路径。作者强调了递归在全排列算法中的应用,并提供了代码实现。最后,代码通过计算比较找到并打印最短路径。
最低0.47元/天 解锁文章
2095





