藍橋杯 試題 歷屆試題 分考場 dfs 回溯

2022-06-25 02:30:11 字數 1200 閱讀 7822

問題描述

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

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

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

輸入格式

第一行,乙個整數n(1輸出格式

一行乙個整數,表示最少分幾個考場。

樣例輸入58

1 21 3

1 42 3

2 42 5

3 44 5

樣例輸出

4樣例輸入510

1 21 3

1 41 5

2 32 4

2 53 4

3 54 5

樣例輸出

5

1 #include2 #include3

using

namespace

std;45

const

int max_n = 100;6

const

int inf = 100000;7

8//輸入9

intn,m;

1011

bool acq[max_n+1][max_n+1] = ;//

acq[i][j]=true i與j考生認識

12 vector room[max_n]; //

考場13

int res = inf; //

儲存最優解

1415

//id:學生編號 num:當前考場最大編號

16void dfs( int id, int

num )

17

21if( id==n+1 )

2526

for( int i=0; i)

2736}37

if( !flag )

38 43}

4445

//新開考場

46room[num].push_back( id );

47 dfs( id+1, num+1

);48

room[num].pop_back();

49}

5051

void

solve()

5257

58int

main()

5967

68solve();

6970

return0;

71 }

藍橋杯 歷屆試題 分考場 DFS

時間限制 1.0s 記憶體限制 256.0mb n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。第一行,乙個整數n 1一行乙個整數,表示最少分幾個考場。5 81 2 1 31 4 2 32 4 2 53 4 4 55 101 2 1 31 ...

藍橋杯 歷屆試題 分考場 (dfs回溯)

題目連線 題意 很明顯了。思路 暴力搜尋 剪支 每新加進來乙個人,都與已經開設的教室裡面的人進行對比,如果找到乙個教室滿足,教室裡面所有的人都不和新加入的人認識,那麼就考慮將這個人加進來。再回溯。最後,當所有教室都不滿足的時候,新增教室。反思 dfs回溯有待提高 include using name...

藍橋杯 歷屆試題 分考場

問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1輸出格式 一行乙個整數,表示最少分幾個考場。樣例輸入5 8 1 2 1 3 1 4 2 3 2 4 2 5 3 4 4 5樣例輸出 4樣例輸入5 10...