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

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

?? 回溯法解電路板問題.cpp

?? 算法分析中
?? CPP
字號:
/*
回溯法解電路板問題
設x表示n塊電路板的一個排列,即在機箱的第i個插槽中插入電路板x[i]
x所確定的電路板排列密度density(x)定義為跨越相鄰電路板插槽的最大連接數
在設計機箱,插槽一側的布線間隙由電路板排列的密度所確定
因此電路板排列問題要求對于給定電路板連接條件(連接塊),確定電路板的最佳排列,使
其具有最小的密度
    算法中用整型數組B表示輸入。B[i][j]的值為1當且僅當電路板i在連接塊Nj中。設
total[j]是連接塊Nj中的電路板數。對于電路板的部分排列x[1:i],設now[j]是x[1:i]中所
包含的Nj中的電路板數。由此可知,連接塊Nj的連線跨越插槽i和i+1當且僅當now[j]》0
且now[j]!=total[j]。我們可以利用這個條件來計算插槽i和插槽i+1之間的連線密度。
*/
#include<iostream>
using namespace std;

class Board
{
	friend Arrangement(int **,int,int,int[]);
private:
	void Backtrack(int i,int cd);
	//第一個參數搜索第i層,此時密度為cd
	int n;
	//電路板數,決定要搜索的排列樹層數
	int m;
	//連接塊數
	int *x;
	//當前解
	int *bestx;
	//當前最優解
	int bestd;
	//當前最優密度
	int *total;
	//total[j]=連接塊j的電路板數
	int *now;
	//now[j]當前解中所含連接塊j的電路板數
	int **B;
	//連接塊數組
};

void Board::Backtrack(int i,int cd)
//回溯搜索排列樹
{
	if ( i == n )
	{
		cout<<"處理最后部分"<<endl;
		for( int j = 1; j <= n; ++j )
		{
			bestx[j] = x[j];
		}
		bestd = cd;
		//得到所有的序列,并更新表示最小密度的變量
		cout<<"結束處理最后部分"<<endl;
	}
	else
	{
		for( int j = i; j <= n; ++j )
		//選擇x[j]為下一塊電路板
		{
			cout<<"開始"<<endl;
			int ld = 0;
			//臨時變量,記錄增加一筆記錄后密度是多少
			//密度最大就是塊數
			for( int k = 1; k <= m; ++k )
			{
				now[k] += B[x[j]][k];
				if ( now[k] >0 && total[k]!= now[k] )
				{
					++ld;
				}
			}
			//更新ld
			if ( cd > ld )
			{
				ld = cd;
			}
			cout<<"結束"<<endl;
			
			cout<<"before"<<endl;
			if ( ld < bestd )
			//搜索子數,搜索前先交換被選中的到當前位置i處
			{
				int temp;
				temp = x[i];
				x[i] = x[j];
				x[j] = temp;
				Backtrack(i+1,ld);
				//返回上層要更新信息
				temp = x[i];
				x[i] = x[j];
				x[j] = temp;
				for( int k = 1; k <= m; ++k )
				{
					now[k] -= B[x[j]][k];
				}

			}
			cout<<"after"<<endl;
			
		}
	}

}

int Arrangement( int **B, int n, int m, int *bestx )
{
	Board X;
	X.x = 0;
	X.x = new int[n+1];
	if ( 0 == X.x )
	{
		return -1;
	}
	X.total = 0;
	X.total = new int[m+1];
	if ( 0 == X.total )
	{
		return -1;
	}
	X.now = 0;
	X.now = new int[m+1];
	if ( 0 == X.now )
	{
		return -1;
	}
	X.B = B;
	X.n = n;
	X.m = m;
	X.bestx = bestx;
	X.bestd = m + 1;
	//初始化total和now
	for( int i = 1; i <= m; ++i )
	{
		X.total[i] = 0;
		X.now[i] = 0;
	}
	//初始化x為單位排列計算total
	for( i = 1; i <= n; ++i )
	{
		X.x[i] = i;
		for( int j = 1; j <= m; ++j )
		{
			X.total[j] += B[i][j];
		}
	}
	//回溯搜索
	X.Backtrack( 1, 0 );
	for( i = 1; i <= n; ++i )
	{
		cout<<bestx[i]<<" ";
	}
	
	if ( 0 != X.x )
	{
		delete []X.x;
	}
	if ( 0 != X.total )
	{
		delete []X.total;
	}
	if ( 0 != X.now )
	{
		delete []X.now;
	}
	cout<<endl;
	cout<<X.bestd<<endl;
	return X.bestd;
}

/*
在電路板排列問題解空間的排列樹的每個結點處,函數Backtrack花費O(m)計算時間
為每個兒子結點計算密度。因此,計算密度所耗費的總計算時間為O(mn!)。另外,生成排列樹
需要O(n!)時間。更新當前最優解需要O(mn)時間。這是每次更新當前最優解至少使bestd減少1,
而算法運行結束時候bestd>=0。因此最優解被更新的次數為O(m)。
綜上可知,解電路板排列問題的回溯算法Backtrack所需要的計算時間為O(mn!)
*/
int main()
{
	int **B = 0;
	B = new int*[9];
	if ( 0 == B )
	{
		return -1;
	}
	for( int i = 0; i < 9; ++ i )
	{
		B[i] = 0;
		B[i] = new int[6];
		if ( 0 == B[i] )
		{
			return -1;
		}
		for( int j = 0; j < 6; ++j )
		{
			B[i][j] = 0;
		}
	}

	B[4][1] = 1;
	B[5][1] = 1;
	B[6][1] = 1;

	B[2][2] = 1;
	B[3][2] = 1;

	B[1][3] = 1;
	B[3][3] = 1;

	B[3][4] = 1;
	B[6][4] = 1;

	B[7][5] = 1;
	B[8][5] = 1;

	int n = 8;
	int m = 5;

	int *bestx = new int[9];
	for( int s = 0; s < 9; ++s )
	{
		for( int s1 = 0; s1 < 6; ++s1 )
		{
			cout<<B[s][s1]<<" ";
		}
		cout<<endl;
	}
	Arrangement( B, n, m, bestx );
	
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美综合视频在线观看| 日日夜夜免费精品| 日韩精品中文字幕在线一区| 欧美亚洲综合久久| 日本韩国欧美一区二区三区| 97se亚洲国产综合自在线观| 91伊人久久大香线蕉| 97久久精品人人做人人爽| av在线不卡免费看| 日本韩国精品在线| 欧美精三区欧美精三区| 欧美一区二区三区四区久久| 欧美一级高清片| 久久久无码精品亚洲日韩按摩| 久久久精品国产免大香伊| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲欧洲精品一区二区三区 | 在线观看91视频| 欧美亚洲愉拍一区二区| 91麻豆精品国产91久久久更新时间 | 婷婷中文字幕综合| 美女任你摸久久| 国产高清在线观看免费不卡| 99国产精品国产精品久久| 在线免费精品视频| 精品国产伦一区二区三区免费 | 欧美极品aⅴ影院| 樱花影视一区二区| 久久国产精品一区二区| 不卡电影免费在线播放一区| 在线观看91精品国产麻豆| 久久久久久久电影| 亚洲成av人片在线观看无码| 精品一二三四区| 91视视频在线直接观看在线看网页在线看| 在线观看视频欧美| 精品久久一区二区| 亚洲精品久久久久久国产精华液| 日韩中文字幕亚洲一区二区va在线 | 成人h动漫精品| 3d动漫精品啪啪1区2区免费 | 国产精品无遮挡| 香蕉av福利精品导航| 国产精品18久久久久久久久久久久| 91色九色蝌蚪| 久久综合狠狠综合久久综合88 | 欧美一区二区在线不卡| 国产精品国产自产拍高清av| 另类综合日韩欧美亚洲| 日本韩国欧美在线| 日本一区二区视频在线观看| 奇米精品一区二区三区在线观看| av亚洲精华国产精华精华| 精品三级在线观看| 日韩国产在线观看一区| 91一区二区在线观看| 国产午夜精品久久| 久久国产生活片100| 7777精品伊人久久久大香线蕉的 | 玉米视频成人免费看| 国产精品亚洲成人| 精品国精品自拍自在线| 亚洲aaa精品| 91九色最新地址| 国产精品久久久久久久久久久免费看| 免费在线观看日韩欧美| 欧美日韩激情一区二区三区| 亚洲欧美aⅴ...| 97国产精品videossex| 欧美激情一区二区三区四区| 激情综合色播五月| 欧美成人官网二区| 免费观看一级欧美片| 在线观看91av| 裸体健美xxxx欧美裸体表演| 欧美一区二区三区四区视频| 日韩国产一区二| 国内精品久久久久影院色| 欧美猛男超大videosgay| 亚洲综合图片区| 在线观看不卡视频| 国产福利精品一区二区| 精品电影一区二区三区| 免费成人性网站| 精品国产乱码久久| 国产裸体歌舞团一区二区| 久久免费午夜影院| 国产成人日日夜夜| 亚洲免费在线视频一区 二区| 91丝袜美腿高跟国产极品老师| 亚洲美女电影在线| 欧美三级日本三级少妇99| 亚洲一区二区三区自拍| 欧美喷水一区二区| 精品一区二区国语对白| 国产片一区二区三区| av不卡在线播放| 天天影视网天天综合色在线播放| 久久久99免费| 一本久久精品一区二区| 亚洲欧美日韩一区| 91在线观看地址| 亚洲www啪成人一区二区麻豆| 91精品国产色综合久久ai换脸| 久久99国产精品久久| 国产精品福利电影一区二区三区四区| 97久久精品人人澡人人爽| 肉色丝袜一区二区| 国产日韩欧美一区二区三区综合| 一本大道久久a久久综合婷婷| 天堂精品中文字幕在线| 国产精品视频看| 欧美日韩大陆一区二区| 高清不卡一区二区在线| 亚洲一区自拍偷拍| 久久久91精品国产一区二区精品| 色婷婷综合久久久中文一区二区| 日韩av网站在线观看| 国产精品久线在线观看| 91麻豆精品国产自产在线| 成人高清视频在线| 日韩av高清在线观看| 亚洲欧美一区二区久久| 日韩精品一区二区在线观看| 色999日韩国产欧美一区二区| 久久国产精品免费| 一区二区日韩av| 国产精品久久久久影院亚瑟| 日韩一区二区三区视频| 欧美中文字幕一区| 不卡一区在线观看| 国产高清亚洲一区| 亚洲成人av资源| 有坂深雪av一区二区精品| 精品国产乱码久久久久久浪潮| 成人禁用看黄a在线| 久久精品久久99精品久久| 亚洲影视资源网| 最新日韩av在线| 亚洲国产高清在线观看视频| 日韩一级黄色片| 中文字幕一区二| 国产三级精品视频| 久久影院午夜片一区| 欧美一区二区三区在线视频 | 国产亚洲一区二区三区在线观看 | 亚洲国产一区二区视频| 国产精品视频免费| 国产精品麻豆欧美日韩ww| 久久综合九色综合97婷婷女人 | 91视频国产观看| 国产成人一区在线| 捆绑调教美女网站视频一区| 午夜精品一区在线观看| 午夜视频在线观看一区| 亚洲激情六月丁香| 中文字幕字幕中文在线中不卡视频| 中国色在线观看另类| 久久久久久久久伊人| 久久久久久久久一| 国产日韩欧美精品电影三级在线| 久久先锋影音av鲁色资源网| 精品久久久久久综合日本欧美 | 日本一区二区成人| 欧美激情一区二区三区不卡 | 一区二区三区四区精品在线视频| 一区二区国产盗摄色噜噜| 一区二区久久久久久| 亚洲成人av一区二区三区| 日本免费新一区视频| 国产一区二区电影| www.亚洲色图| 欧美手机在线视频| 精品国精品自拍自在线| 国产亚洲精品bt天堂精选| 中文字幕日韩av资源站| 亚洲国产视频一区| 极品瑜伽女神91| caoporn国产一区二区| 欧洲中文字幕精品| 日韩欧美一二区| 国产精品三级在线观看| 亚洲一区二区视频在线| 久色婷婷小香蕉久久| 成人av网在线| 正在播放亚洲一区| 国产精品九色蝌蚪自拍| 成人午夜又粗又硬又大| 在线精品视频小说1| 26uuu精品一区二区| 亚洲欧美日韩在线播放| 六月丁香婷婷色狠狠久久| jlzzjlzz亚洲日本少妇| 欧美日韩国产综合视频在线观看| 久久综合国产精品| 亚洲与欧洲av电影| 成人一道本在线| 欧美电视剧在线观看完整版| 亚洲精品免费视频| 国产成人av一区二区三区在线 |