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

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

?? branchbound.c

?? 算法作業
?? C
字號:
//分支定界法解有條件限制下的最小路徑問題
//Author:SY0806209成柳

#include <stdio.h>
#include "BranchBound.h"

//從文件中讀出圖的矩陣形式
int readMatrix(FILE *,int **);

//排序,將每個節點與其他節點的距離排序,得到排序后的索引,據此以構造圖的鏈表,使得深度優先,擴展節點時,選擇最短的路徑,盡早的定下界
void sortMatrix(int *,int *);

//分支定界法搜索,遞歸調用,深度優先
void branchBoundSearch(PNode *,int);


int m1[50][50];  //城市之間距離的有向圖矩陣
int m2[50][50];  //城市之間道路的收費額有向圖矩陣

int bound[50];	//分支定界的下界,為每個節點都定一個下界,即從0節點到i節點的當前最小距離

int stack[50];  //堆棧,保存當前搜索路徑
int top = -1;   //棧頂

int answer[50][50];		//保存找到的可行解,最后一個是最優解
int count = 0;			//可行解的個數

int current = 0;   //當前搜索路徑的長度

int spend =0;      //當前搜索路徑的花費

int cost= 0;  //存最優解的花費


//主函數
int
main()
{
	int i = 0;
	PNode length_map[50];    //有向圖的鏈表表示,存距離有向圖


	//1.讀入距離和花費的兩個矩陣m1、m2。
	FILE * file;
	if ((file = fopen("m1.txt","r"))==NULL)
		printf("open file m1.txt error");

	readMatrix(file,m1);
	fclose(file);
	if ((file=fopen("m2.txt","r"))==NULL)
	{
		printf("open file m2.txt error");
	}
	readMatrix(file,m2);
	fclose(file);

	//2.把m1距離有向圖信息保存在鏈表length_map。
	for (i=0;i<50;i++)
	{
		length_map[i] =NULL;
		bound[i] = 9999;     //初始化下界,開始都為無限大
	}
	createMap(length_map,m1);

	//3、分支定界法搜索圖,找到最優解。
	branchBoundSearch(length_map,0);

	//4、打印出最優解的路徑、距離、花費
	printf("作者:SY0806209成柳\n");
	printf("\nPath:0-->");
	for(i=0;i<50&answer[count-1][i]!=49;i++)
	{
		printf("%d-->",answer[count-1][i]);
	}
	printf("49\n");
	printf("Length:%d\n",bound[49]);
	printf("Cost:%d\n",cost);

	return 0;
}


//從文件中讀出圖的矩陣形式
int readMatrix(FILE * file,int m[50][50])
{
	char temp[5],ch;
	int i = 0,k=0;
	while((ch=fgetc(file))!=EOF)
	{
		if (ch!='\t'&&ch!=' '&&ch!='\n')
		{
			temp[k++] = ch;
		}
		else
		{
			temp[k] = '\0';
			m[i/50][i%50] = atoi(temp);
			i++;
			k=0;
		}
	}
	
	return 0;
}


//排序,將每個節點與其他節點的距離排序,得到排序后的索引,據此以構造圖的鏈表,使得深度優先,擴展節點時,選擇最短的路徑,盡早的定下界
void sortMatrix(int * m,int *key)
{
	int i,j;
	int min = 0;
	int mk;
	int temp;

	for (i=0;i<50;i++)
	{
		key[i]=i;
	}
	for (i=0;i<49;i++)
	{
		min = m[key[i]];
		for (j=i+1;j<50;j++)
		{
			if (m[key[j]]<min)
			{
				min = m[key[j]];
				mk = j;
			}
		}
		if (min != m[key[i]])
		{
			temp = key[i];
			key[i] = key[mk];
			key[mk] = temp;
		}
	}

}



//由矩陣表示構造出鏈表表示
void createMap(PNode * lenth_map,int m[][50])
{
	int key[50];
	int i,j;
	PNode aNode,tail;
 
	for(i=0;i<50;i++)
	{
		//排序,將每個節點與其他節點的距離排序,得到排序后的索引,據此以構造圖的鏈表,使得深度優先,擴展節點時,選擇最短的路徑,盡早的定下界
		sortMatrix(m,key);

		for(j=0;j<50;j++)
		{
			if (m[i][key[j]]!=9999)
			{
				aNode = (PNode)malloc(sizeof(Node));
				aNode->id = key[j];
				aNode->nextNode = NULL;
				if(lenth_map[i]==NULL)
				{
					lenth_map[i] = aNode;
				}
				else
					tail->nextNode = aNode;
				tail = aNode;
			}
		}
	}

}




//分支定界法搜索,遞歸調用,深度優先
void branchBoundSearch(PNode * length_map,int v)
{
	PNode w;
	int i,j;
	int flag=0;

	w = length_map[v];
	
	//已遞歸到了終點49,即產生一個可行解,存儲
	if (v == 49)
	{
		cost = spend;
		for(j=0;j<=top;j++)
			answer[count][j] = stack[j];
		count++;
	}

	//遞歸調用,深度優先遍歷
	while(w!=NULL)
	{
		i = w->id;

		//判斷是否回路,flag置1,回路
		for(j=0;j<=top;j++)
		{
			if (stack[j]==i)
			{
				flag =1; 
				break;
			}
		}

		//非回路
		if (flag == 0)
		{
			current += m1[v][i];
			spend += m2[v][i];

			//當前路徑距離小于下界,且花費在1200之類,則繼續遞歸,即擴展當前節點,記錄路徑
			//若非,則停止擴展,剪枝
			if(current< bound[i] && spend < 1200)
			{
				bound[i] = current;
				top++;
				stack[top] = i;
				branchBoundSearch(length_map,i);
				top--;
			}

			current -= m1[v][i];
			spend -= m2[v][i];
		}
		
		w = w->nextNode;
		flag = 0;
	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品高潮呻吟久久| 欧美日本韩国一区| 欧美电影免费提供在线观看| 亚洲国产精品影院| 欧美特级限制片免费在线观看| 亚洲女厕所小便bbb| 欧美三级日韩在线| 国产精品自在在线| 国产精品久久久久9999吃药| 国产日韩亚洲欧美综合| 色婷婷亚洲婷婷| 日本亚洲三级在线| 国产亚洲欧美日韩日本| 在线观看成人免费视频| 极品少妇一区二区三区精品视频| 中文字幕一区在线| 精品国产百合女同互慰| 99久久免费视频.com| 亚洲va国产天堂va久久en| 国产午夜久久久久| 国产精品麻豆久久久| 日韩精品专区在线| 国产视频一区二区在线观看| 国产精品电影一区二区| 亚洲国产aⅴ天堂久久| 日韩福利电影在线| 国产成人在线免费| 另类调教123区| 午夜欧美在线一二页| 亚洲免费在线观看| 日韩电影在线观看网站| 成人h动漫精品一区二区| 麻豆国产欧美日韩综合精品二区| 午夜视频在线观看一区二区| 国产乱子轮精品视频| 日韩高清一区在线| 不卡av在线网| 欧美一区二区三区人| 在线视频一区二区免费| 久久久久久日产精品| 欧美日韩的一区二区| 国产日韩欧美综合在线| 丝袜a∨在线一区二区三区不卡| 亚洲综合色区另类av| 国产精品视频一二| 久久精品国产77777蜜臀| 一本一道综合狠狠老| 久久伊99综合婷婷久久伊| 欧美va在线播放| 精品国产免费久久| 亚洲国产成人va在线观看天堂| 丰满少妇在线播放bd日韩电影| 国产成人丝袜美腿| 日韩一区二区三区av| 欧美大片拔萝卜| 午夜在线成人av| 成人激情视频网站| 久久午夜免费电影| 久久国产精品一区二区| 欧美精品在线观看播放| 精品卡一卡二卡三卡四在线| 亚洲国产日韩在线一区模特| 波多野结衣91| 欧美日韩日本视频| 亚洲伊人色欲综合网| av不卡一区二区三区| 国产精品入口麻豆九色| 国产精品一级片| 久久久久久久综合色一本| 欧美aaaaa成人免费观看视频| 国产一区二区三区在线观看精品 | 欧美日韩国产经典色站一区二区三区| 久久久三级国产网站| 精品一区二区三区免费播放 | 黄页网站大全一区二区| 成人99免费视频| 国产精品拍天天在线| 国产精品小仙女| 国产精品视频第一区| 国产成人av福利| 日本一区二区三区高清不卡| 成人h动漫精品一区二区| 亚洲人午夜精品天堂一二香蕉| 97久久超碰国产精品| 亚洲精品视频在线| 极品美女销魂一区二区三区| 欧美大片在线观看一区二区| 国产呦萝稀缺另类资源| 日本一二三不卡| 日本欧美一区二区| 精品国产亚洲在线| 高清免费成人av| 一区二区在线观看免费视频播放| 色综合欧美在线视频区| 日韩激情一区二区| 国产拍揄自揄精品视频麻豆| 91亚洲精品一区二区乱码| 日韩一区二区电影网| 国产精品夜夜嗨| 亚洲综合区在线| 日韩欧美电影在线| av日韩在线网站| 奇米影视在线99精品| 国产欧美一二三区| 欧美性感一类影片在线播放| 日本v片在线高清不卡在线观看| 精品国产伦一区二区三区观看体验| 国产凹凸在线观看一区二区| 亚洲一级二级在线| 精品国产免费人成电影在线观看四季| 99国产精品视频免费观看| 青娱乐精品在线视频| 亚洲天堂福利av| 丁香啪啪综合成人亚洲小说 | 激情五月婷婷综合| 亚洲欧洲精品一区二区精品久久久| 欧美酷刑日本凌虐凌虐| 成人av资源网站| 精品中文字幕一区二区小辣椒 | 日韩写真欧美这视频| 成人的网站免费观看| 免费一级欧美片在线观看| 亚洲少妇中出一区| 久久亚洲一区二区三区四区| 欧美日韩在线播放三区| www.色综合.com| 精品一区二区三区免费毛片爱| 亚洲夂夂婷婷色拍ww47| 中文字幕在线一区免费| 精品国产91乱码一区二区三区 | 99国内精品久久| 国产精品亚洲一区二区三区在线| 亚洲一区二区三区激情| 亚洲欧洲国产日韩| 久久精品视频免费| 日韩免费高清视频| 欧美日韩小视频| 欧美午夜不卡视频| 一本大道久久a久久精二百| 成人午夜激情片| 丰满少妇在线播放bd日韩电影| 蜜桃视频第一区免费观看| 午夜精品影院在线观看| 亚洲一区二区3| 亚洲在线视频网站| 亚洲影院在线观看| 一区二区久久久久| 日韩欧美你懂的| 欧美精品一二三区| 欧美精三区欧美精三区| 欧美精品tushy高清| 91精品国产乱| 91麻豆精品国产| 暴力调教一区二区三区| 懂色av一区二区三区免费看| 国产麻豆视频精品| 不卡一区在线观看| 91视频国产资源| 色哦色哦哦色天天综合| 91麻豆国产香蕉久久精品| 99久久国产综合精品女不卡| 91日韩一区二区三区| 欧美日韩中文字幕一区二区| 欧美高清激情brazzers| 精品欧美一区二区在线观看| 久久色在线观看| 国产精品成人在线观看| 亚洲精品视频一区| 丝袜a∨在线一区二区三区不卡| 日本va欧美va精品| 国产精品99久久久久久有的能看| gogo大胆日本视频一区| 欧美色精品在线视频| 日韩精品一区二区三区中文不卡 | 51午夜精品国产| 欧美哺乳videos| 中文字幕在线观看不卡视频| 亚洲一级片在线观看| 韩国女主播一区| 成人毛片老司机大片| 欧美日产国产精品| www久久久久| 亚洲精品va在线观看| 狠狠色伊人亚洲综合成人| 不卡一卡二卡三乱码免费网站| 欧美日韩国产bt| 日本一区二区高清| 日本vs亚洲vs韩国一区三区二区 | 日韩精品福利网| 国产成人亚洲综合色影视| 91免费看片在线观看| 日韩三级视频在线观看| 中文字幕日韩av资源站| 日韩福利电影在线| 色综合久久久久综合99| 久久久另类综合| 奇米亚洲午夜久久精品| a4yy欧美一区二区三区| xnxx国产精品| 午夜视频一区在线观看|