試題 歷屆試題 分考場

2021-10-20 00:25:39 字數 990 閱讀 7954

問題描述

n個人參加某項特殊考試。

為了公平,要求任何兩個認識的人不能分在同乙個考場。

求是少需要分幾個考場才能滿足條件。

輸入格式

第一行,乙個整數n(1#include

#include

#include

#include

using

namespace std;

int n,m,ans=

9999

;//最小考場數預設9999

int g[

101]

[101];

//儲存兩人關係的鄰接矩陣

vector<

int> room[

101]

;//房間陣列 開闢101個房間

void

dfs(

int x,

int sum1)

//當前的第x個學生,當前的考場數

if(sum1>=ans)

//剪枝 如果當前考場已經比最小考場數大了,就不用往下進行安排了

return

;int i,j,flag;

for(i=

1;i<=sum1;i++)}

if(!flag)

//如果迴圈完這個考場都不認識

} room[sum1+1]

.push_back

(x);

//沒有辦法,新增考場 ,將它安排進新考場

dfs(x+

1,sum1+1)

;//再進行下一次搜素

room[sum1+1]

.pop_back()

;//回溯 ,不安排它

}int

main()

dfs(1,

0);//從第乙個學生開始進行搜尋(安排考場)

printf

("%d\n"

,ans)

;return0;

}

試題 歷屆試題 分考場

看的n不大,就100,我們想到直接暴力做,當然,最好還是剪枝一下,我這裡用了順序列舉,排序剪枝,中間判斷一下當前的考場數量比當前的ans是否大,如果大於等於了,就不用列舉,所以就兩次剪枝,我就過了 include include include include using namespace std...

試題 歷屆試題 分考場

問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1思路分析 此題是乙個圖的可著色優化問題.注意回溯的問題 和 使用剪枝避免超時問題.實現 include using namespace std con...

歷屆試題 分考場

問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1一開始以為是簡單的貪心問題,可不想一直正確率40 最後發現還是需要採用回溯,在剪枝下深度遍歷所有情況.include int pre 100 100 ...