問題描述:
原始部落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開始,...