亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? graph.cpp

?? 旅行商問題問題的二叉樹求解方法
?? CPP
字號:
#include "graph.h"
#include "share.h"
#include <stdio.h>
#include<stdlib.h>
#include <limits.h>

/************************************************************************/
/*從文件中讀入圖像信息并構成圖像
/************************************************************************/
graph* creatgraph(char* s)
{
	FILE *fp = fopen(s,"r");//打開文件
	if (!fp) {
		printf("Can't open the file!");
		exit(0);
	}
	//申請空間并生成圖像信息
	graph* g=(graph*)malloc(sizeof(graph));
	fscanf(fp,"%d",&g->vernum);
	fscanf(fp,"%d",&g->arcnum);
	int n=g->vernum;
	int * mat=(int *)malloc(sizeof(int)*n*n);//獲得圖像鄰接矩陣
	if (!mat) {
		printf("memory flow!");
		exit(0);
	}
	for (int i=0;i<n;i++ ) {
		for (int j=0;j<n;j++) {
			fscanf(fp,"%d",&mat[i*n+j]);
		}
	}
	g->nermat = mat;
	g->suit = false;
	return(g);
}

/************************************************************************/
/*得到圖像的邊信息
/************************************************************************/
void getarcinfo(graph* g,arc * a)
{
	int num = 0;
	int n= g->vernum;
	int *t = g->nermat;
	for (int i=0;i<n;i++) {//無向圖,只用掃描其中的一半
		for (int j=0;j<=i;j++) {
			if(t[i*n+j]>0)
			{
				a[num].start = i;
				a[num].end = j;
				a[num++].weight = t[i*n+j];
			}
		}
	}
}
/************************************************************************/
/*對圖像進行旅行商問題搜索
/************************************************************************/
int* TSP(graph* g)
{
	int n=g->arcnum;
	int vn = g->vernum;
	int d=INT_MAX;
	bool first = true;//判斷石構繼續循環
	bool seccess = false;//是否找到適合的路徑
	arc* a= (arc*)malloc(sizeof(arc)*n);
	getarcinfo(g,a);//獲得圖像邊的信息
	sort(a,n);//對各個邊進行排序
	int * ser = (int *)malloc(sizeof(int)*(vn+1));//當前序列
	int * path = (int *)malloc(sizeof(int)*(vn+1));//路徑儲存
	for (int i=0;i<vn;i++) {
		path[i] = -1;
	}
	for (int j=0;j<vn;j++) {
		ser[j]=j;
	}
	int k=1;int num=vn;
	while (k<=vn) {
		while (!seccess) {
			getarc(a,ser,vn);//得到當前路徑的總長度
			if (ser[vn]>d) {//比最短路徑長
				num=vn-1;
				while (ser[num]==ser[num-1]+1) {
					num--;
				}
				if (num == vn-k) {
					break;//跳出被循環
				}
				else{//尋找更短的路徑
					ser[num-1]++;
					for (int i=num;i<vn;i++) {
						ser[i]=ser[i-1]+1;
					}
				}
			}else{
				first = false;
				if (test(a,ser,vn)) {//判斷時候構成回路
					d=ser[vn];//保存路徑信息
					for (int i=0;i<=vn;i++) {
						path[i]=ser[i];
					}
					seccess = true;
					break;
				}
				else{
					num=1;//尋找下一條路徑
					while (ser[vn-num]==n-num) {
						num++;
					}
					ser[vn-num]++;
					for (int i=vn-num+1;i<vn;i++) {
						ser[i] = ser[i-1]+1;
					}
				}

			}
		}
		if (first) {
			break;
		}
		k++;
		seccess = false;
		first = true;
		for (int j=0;j<vn-k;j++) {
			ser[j] = j;
		}
		while (j<vn) {
			ser[j] = j+1;
			j++;
		}

	}
	for (int i=0;i<vn;i++) {
		if(path[i] == -1)
		{
			printf("there is even not a circle!\n");
			return(NULL);
		}
	}
	shoepath(a,path,vn);//顯示路徑信息
	free(a);
	free(ser);
	return(path);
}
/************************************************************************/
/*根據邊的序號顯示旅行商的路徑信息
/************************************************************************/
void shoepath(arc* a,int* ser,int n)
{
	int num=n-1;
	bool * over = (bool*)malloc(sizeof(bool)*n);
	int set = a[ser[0]].end;
	over[0] =true;
	for (int i=1;i<n;i++) {
		over[i] = false;
	}
	printf("MiniLength:%d\n",ser[n]);
	printf("%d->",a[ser[0]].start+1);
	while (num>0) {
		for (int i=0;i<n;i++) {
			if (!over[i]) {
				if (a[ser[i]].start == set) {
					printf("%d->",a[ser[i]].start+1);
					set = a[ser[i]].end;
					over[i] = true;
					break;
				}else if(a[ser[i]].end == set){
					printf("%d->",a[ser[i]].end+1);
					set = a[ser[i]].start;
					over[i] = true;
					break;
				}
			}
		}
		num--;
	}
	printf("%d\n",set+1);
	free(over);
}
/************************************************************************/
/*根據當前的狀態獲取幾條邊
/************************************************************************/
void getarc(arc* a,int *ser,int n)
{
	ser[n] = 0;
	for (int i=0;i<n;i++) {
		ser[n] += a[ser[i]].weight;
	}
}

/************************************************************************/
/*測試這幾條邊能不能構成回路
/************************************************************************/
bool test(arc*a,int* ser,int n)
{
	int num=n;
	bool * over = (bool*)malloc(sizeof(bool)*n);
	bool get = false;
	for (int i=0;i<n;i++) {
		over[i] = false;
	}
	int set = a[ser[0]].end;
	over[0] =true;
	num--;
	while (num>0) {
		for (int i=0;i<n;i++) {
			if (!over[i]) {
				if (a[ser[i]].start == set) {
					set = a[ser[i]].end;
					over[i] = true;
					get =true;
					break;
				}else if(a[ser[i]].end == set){
					set = a[ser[i]].start;
					over[i] = true;
					get = true;
					break;
				}
			}
		}
		if (!get) {
			free(over);
			return(false);
		}
		num--;
		get = false;
	}
	free(over);
	if (set == a[ser[0]].start) {
		return(true);
	}else{
		return(false);
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区免费视频| 中文字幕一区二区三区色视频| 国产v日产∨综合v精品视频| 蜜臀a∨国产成人精品| 奇米色一区二区| 奇米影视一区二区三区| 琪琪一区二区三区| 精品在线免费观看| 国产成人综合亚洲网站| 国产91在线|亚洲| 不卡一区二区在线| 91福利在线导航| 欧美久久久久久久久久| 日韩欧美一区在线观看| 久久综合成人精品亚洲另类欧美 | 国产一区二区0| 国产福利精品一区| 一道本成人在线| 91精品国产全国免费观看| 日韩欧美二区三区| 尤物在线观看一区| 亚洲综合成人在线视频| 免费成人美女在线观看.| 国产伦精品一区二区三区在线观看| 国产精品一品视频| 91看片淫黄大片一级在线观看| 欧美日韩综合在线免费观看| 欧美一区二区三区播放老司机| 久久免费的精品国产v∧| 亚洲日本乱码在线观看| 日韩成人午夜精品| 国产成人午夜视频| 91国在线观看| 久久日一线二线三线suv| 亚洲欧洲三级电影| 免费人成网站在线观看欧美高清| 国产成人综合网| 欧美高清视频不卡网| 久久精品一区二区| 日韩高清中文字幕一区| 成人精品视频.| 日韩欧美的一区| 亚洲网友自拍偷拍| 粉嫩av一区二区三区| 欧美精品在线视频| 成人免费在线视频观看| 国产麻豆一精品一av一免费| 欧美日韩在线电影| 亚洲欧美日韩中文字幕一区二区三区 | 97se亚洲国产综合在线| 国产精品私房写真福利视频| 国产日韩欧美亚洲| 午夜欧美在线一二页| 成人免费高清视频| 2020日本不卡一区二区视频| 亚洲午夜私人影院| 色综合视频一区二区三区高清| 精品国产三级a在线观看| 亚洲va欧美va天堂v国产综合| 成人做爰69片免费看网站| 日韩一区二区精品葵司在线| 亚洲亚洲精品在线观看| 色综合一区二区三区| 国产欧美1区2区3区| 精品中文字幕一区二区| 日韩亚洲欧美一区二区三区| 亚洲国产精品一区二区久久恐怖片| 福利91精品一区二区三区| 精品国产制服丝袜高跟| 精品亚洲国产成人av制服丝袜| 欧美老年两性高潮| 日韩综合小视频| 欧美一区午夜精品| 亚洲国产精品久久人人爱| 91麻豆精东视频| 亚洲靠逼com| 欧美在线不卡视频| 亚洲图片欧美综合| 欧美一区二区大片| 激情综合一区二区三区| 精品精品国产高清a毛片牛牛| 精品一区二区三区视频| 久久无码av三级| 丰满白嫩尤物一区二区| 中文字幕 久热精品 视频在线| jizzjizzjizz欧美| 亚洲自拍偷拍欧美| 欧美精三区欧美精三区| 久久精品国产99| 国产婷婷色一区二区三区在线| 国产99久久久精品| 亚洲精品国产精华液| 欧美午夜一区二区三区免费大片| 日韩精品成人一区二区在线| 日韩午夜在线影院| 国产91精品露脸国语对白| 一区二区三区免费在线观看| 欧美日韩不卡一区二区| 韩日欧美一区二区三区| 中文一区在线播放| 欧美日韩中文字幕一区| 蜜臀av性久久久久av蜜臀妖精| 久久精品欧美一区二区三区麻豆| 91视频在线观看免费| 日本 国产 欧美色综合| 国产日韩欧美精品一区| 在线视频一区二区三| 久久爱另类一区二区小说| 中文字幕不卡在线观看| 777午夜精品免费视频| 成人晚上爱看视频| 天天av天天翘天天综合网 | 豆国产96在线|亚洲| 国产精品传媒视频| 日韩视频免费观看高清完整版在线观看| 国产高清不卡二三区| 午夜亚洲国产au精品一区二区| 久久众筹精品私拍模特| 欧美无砖专区一中文字| 粉嫩av一区二区三区在线播放| 天天亚洲美女在线视频| 亚洲视频一区二区免费在线观看| 日韩一级片在线播放| 在线观看日韩电影| www.色综合.com| 国内精品嫩模私拍在线| 婷婷夜色潮精品综合在线| 国产精品久久久久久久久果冻传媒 | 国产精品全国免费观看高清| 欧美巨大另类极品videosbest | 麻豆精品蜜桃视频网站| 日韩美女视频19| 久久精品一区蜜桃臀影院| 欧美一区二区三区播放老司机| 色综合天天综合网天天狠天天| 国产一区91精品张津瑜| 奇米精品一区二区三区在线观看| 亚洲专区一二三| 怡红院av一区二区三区| 欧美高清一级片在线观看| 久久久噜噜噜久噜久久综合| 欧美一区二区成人| 欧美一区二区人人喊爽| 欧美人牲a欧美精品| 在线视频观看一区| 91极品美女在线| 色欧美88888久久久久久影院| 国产成人精品www牛牛影视| 国产一区二区三区黄视频| 美日韩黄色大片| 青青青伊人色综合久久| 日本不卡免费在线视频| 免费成人深夜小野草| 久久爱www久久做| 韩国精品一区二区| 国产酒店精品激情| 风流少妇一区二区| 91视频在线看| 欧美日韩高清影院| 欧美一区二区三级| 久久久99免费| 亚洲一级电影视频| 亚洲国产精品久久久男人的天堂 | 久久精品亚洲精品国产欧美 | 91精品国产91久久久久久一区二区 | 精品视频123区在线观看| 欧美日韩国产中文| 欧美电影一区二区| 2023国产精品视频| 亚洲欧美自拍偷拍色图| 伊人一区二区三区| 麻豆精品在线观看| 高清beeg欧美| 欧美三级在线看| 精品国产伦一区二区三区观看体验| 久久久久国产免费免费| 亚洲色图20p| 卡一卡二国产精品| 白白色 亚洲乱淫| 欧美精品乱码久久久久久| 久久蜜桃一区二区| 亚洲激情自拍偷拍| 久国产精品韩国三级视频| 成人av片在线观看| 91精品国产高清一区二区三区蜜臀 | 美女网站色91| 波多野结衣中文一区| 欧美肥妇free| 1区2区3区国产精品| 日韩1区2区日韩1区2区| 成人精品免费网站| 欧美一区二区三区播放老司机| 国产欧美精品一区二区色综合朱莉| 一区二区三区免费观看| 国产毛片精品国产一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲丰满少妇videoshd| 国产一区免费电影| 欧美高清www午色夜在线视频| 欧美国产一区视频在线观看|