离散数学实验报告存档

2018离散数学实验报告存档
旅行经销商问题
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Addpace(int x[5]) //函数Addpace用来将权重相加 
{
	int n;
	int addpace=0;
	for(n=0;n<5;n++)
	{
		addpace+=x[n];
	}
	return addpace;
}
int conPace(int str[6])//conPace 函数用来比较各个城市的最短路,得出最优路 
{
	int m;
	int min;//min存储比较值
	min=100; 
	for(m=0;m<6;m++)
	{
		if(str[m]<min)
		{
			min=str[m];
		}
	}
	return min;
}
void main(void)
{
	printf("共有6个城市:a,b,c,d,e,f。城市间的距离分别为:a:0,6,7,2,9,16;b:6,0,3,11,12,15;c:7,3,0,9,18,5;d:2,11,9,0,13,18;e:9,12,18,13,0,13;f:16,15,5,18,13,0\n");
	//定义六个城市
	int i,j;//定义i表示前一个城市,j表示后一个城市
	int pS;//pS存储出发城市
	int pE;//pE存储到达城市 
	int t;//t为比较值,暂时存储最小权重 
	int k;
	int add;
	int bestpace;//bestpace存储最优路 
	int Dipace[6];//数组Dipace 存储 不同城市出发的最短路 
	int citypace[5];//citypace存储从不同城市出发的每一段路 
	for(i=0;i<6;i++)//从i开始循环,表示从不同城市出发 
	{
	    int flag[6]={0,0,0,0,0,0} ;//flag数组用来判断选择的城市是否已在最短路中,每次循环 
	    pS=i;
		flag[pS]=1;
		int strCity[6][6]={{100,6,7,2,9,16},{6,100,3,11,12,15},{7,3,100,9,18,5},{2,11,9,100,13,18},{9,12,18,13,100,13},{16,15,5,18,13,100}};
	//二维数组表示城市间的距离,城市本身的距离初始化为100,方便后期比较大小,取最短路,每次从 不同城市出发初始化 
	    printf("从%c->",i+97);
		for(k=0;k<5;k++)//第二层循环k,储存城市之间最小权重 
		{
		    t=100; //初始化比较值
			for(j=0;j<6;j++)//第三层循环j,挑选距离上一个城市最短的城市 
			{
				if(strCity[pS][j]<=t)
				{
					if(flag[j]==0)
					{
						t=strCity[pS][j];
						citypace[k]=t;
						pE=j;
					}
					else
					{
						continue;
					}	
				}	
			 }
			 printf("%c->",pE+97);
			 flag[pE]=1; //使到达城市标记为1;下次循环时排除 
			 strCity[pE][pS]=strCity[pS][pE]=200;//改变flag为1的城市之间的距离,方便找出下一个城市 
			 pS=pE;//起始城市改变 
		 } 
		 printf("%c  ",i+97);
	     add=Addpace(citypace);
		 Dipace[i]=add+strCity[pE][i];//把此次循环得到的每一段路相加,得到从I城市出发的最短路
		 printf("从%c开始最短路为%d\n",i+97,Dipace[i]);
		 citypace[0]=citypace[1]=citypace[2]=citypace[3]=citypace[4]=0;//初始化city pace数组,储存下一次i循环的城市间的距离 
	 } 
	 bestpace=conPace(Dipace);//得到最优路长度 
	 printf("最优路长度为%d",bestpace); 
}

运行结果:
在这里插入图片描述

发布了7 篇原创文章 · 获赞 0 · 访问量 43

猜你喜欢

转载自blog.csdn.net/Hireath_/article/details/104572227