試題 歷屆試題 分考場

2021-10-08 18:20:07 字數 1008 閱讀 1909

問題描述

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

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

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

輸入格式

第一行,乙個整數n(1思路分析

此題是乙個圖的可著色優化問題. 注意回溯的問題 和 使用剪枝避免超時問題.

實現**

#include

using

namespace std;

const

int n =

101;

int g[n]

[n];

// 表示是否有認識關係

int room[n]

[n];

// 標記每個房間當中加入的是誰

int cnt[n]

;// 標記每個房間當中的人數

int hcnt;

// 記錄房間的數量

int ans = int_max;

// 最終答案

void

dfs(

int cur,

int n)

else

}// 如果這個房間裡的人均不認識, 則新增到這個房間中

if(flag)

}// 為學生新建立乙個房間

cnt[hcnt]+=

1;/* 房間人數 + 1*/

room[hcnt][0

]= cur;

/* 將人放置到房間中*/

hcnt +=1

;/* 房間數量 + 1*/

dfs(cur +

1, n)

; hcnt -=1

;/* 房間數量 - 1*/

cnt[hcnt]-=

1;/* 對應房間的人數 - 1*/}}

intmain()

dfs(

1, n)

; cout << ans << endl;

return0;

}

試題 歷屆試題 分考場

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

試題 歷屆試題 分考場

問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1 include include include include using namespace std int n,m,ans 9999 最小考場數...

歷屆試題 分考場

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