部落衛隊問題 分支限界法

2021-06-14 21:25:48 字數 1060 閱讀 9848

問題描述:

原始部落byteland中的居民們為了爭奪有限的資源,經常發生衝突。幾乎每個居民都有他的仇敵,部落首長為了組織一支保衛部落的隊伍,希望從部落的居民中選出最多的居民入伍,並保證隊伍中任何2個人都不是仇敵。

演算法設計:

給定byteland部落中居民間的仇敵關係,計算組成部落衛隊的最佳方案。

資料輸入:

第1行有兩個整數n和m,表示byteland部落中有n個居民,居民間有m個仇敵關係。居民編號為1,2,3...n。接下來的m行中,每行有2個正整數u和v,表示居民u與居民v是仇敵。

結果輸出:

將計算的部落衛隊的最佳組建方案輸出,第一行是部落衛隊的人數;第二行是衛隊組成xi,xi=0表示居民i不在衛隊,xi=1表示居民i在衛隊中。

示例:

輸入:7 10

1 21 4

2 42 3

2 52 6

3 53 6

4 55 6

輸出:3

1 0 1 0 0 0 1

**:

#include

#include

using namespace std;

int str[100][100];

int p[100];

int c[100];

int n, m,k;

void team()

else if(str[u][i] == 0 && p[i] == 0)}}

}int main()

team();

for(i = 1; i <= n; i ++)

else if(p[i] == 1)

}printf("%d\n",k); 

for(i = 1; i <= n; i ++)

printf("%d ",p[i]);  

system("pause");

return 0;

}

佈線問題 分支限界法

佈線問題就是在 m n 的方格陣列中,指定乙個起點 a 乙個終點 b,要求找到起點到終點的最短佈線方案 最短路徑 搜尋從起點 a 開始,到目標點 b 結束。約束條件 有邊相連且未成佈線。搜過過程 從起點 a 開始,將其作為乙個擴充套件結點,沿 a 的上 下 左 右 4 個方向的相鄰結點擴充套件。判斷...

佈線問題 分支限界法

問題描述 印刷電路板不限區域劃分成n m個方格陣列。如下圖所示 精確的電路佈線問題要求確定連線方格a的中點,到連線方格b的中點的最短佈線方案。佈線時,電路只能沿直線或直角佈線。為了避免線路相交,已佈的線的方格做了封鎖標記,其他線路不允許穿過被封鎖的方格。分支限界法的解決方案 首先,從起始位置a開始,...

佈線問題 分支限界法

問題描述 印刷電路板不限區域劃分成n m個方格陣列。如下圖所示 精確的電路佈線問題要求確定連線方格a的中點,到連線方格b的中點的最短佈線方案。佈線時,電路只能沿直線或直角佈線。為了避免線路相交,已佈的線的方格做了封鎖標記,其他線路不允許穿過被封鎖的方格。分支限界法的解決方案 首先,從起始位置a開始,...