1. 程式人生 > >【 OJ 】 HDOJ1046 18年12月8日21:43 [ 40 ]

【 OJ 】 HDOJ1046 18年12月8日21:43 [ 40 ]

此題雖然是水題,但是此類問題卻不是一個水題

從圖論的角度來看,TSP問題實質是在一個帶權完全無向圖中,找一個權值最小的Hamilton迴路。由於該問題的可行解是所有頂點的全排列,隨著頂點數的增加,會產生組合爆炸,它是一個NP完全問題。 
早期的研究者使用精確演算法求解該問題,常用的方法包括:分枝定界法、線性規劃法、動態規劃法等。但是,隨著問題規模的增大,精確演算法將變得無能為力,因此,在後來的研究中,國內外學者重點使用近似演算法或啟發式演算法,主要有遺傳演算法、模擬退火法、蟻群演算法、禁忌搜尋演算法、貪婪演算法和神經網路等。 
 

# include<iostream>
#include <iomanip>
using namespace std;
int main(void) {
	int n,nn;
	cin >> n; nn = 1;
	int c, k;
	double qrt2 = sqrt(2);
	while (n--) {
		cin >> c >> k;//輸入長寬
		cout << "Scenario #" << nn++<<":\n";
		if (!(c & 1) || !(k & 1)) {
			cout.setf(ios::fixed);
			cout <<setprecision(2) << (double)c*k << endl;
		}
		else {
			cout.setf(ios::fixed);
			cout << setprecision(2) << (double)c*k+qrt2-1 << endl;
		}
		if (n)
			cout << endl;
	}
	system("pause");
	return 0;
}

最近沒時間寫這些東西,但是這些方法還是要寫的.....先留著吧...