題目出處:《資訊學奧賽一本通》例5.7
題目描述
學校放假時,汪老師有a、b、c、d、e五本書,要分給參加培訓的張、王、劉、孫、李五位同學,每人只能選一本書。老師實現讓每個人將自己喜歡的數填寫在如下的**中。然後根據他們填寫的表來分配書本,希望設計乙個程式幫助老師求出所有可能的分配方案,使每個學生都滿意。ab
cde張同學yy
王同學yyy
劉同學y
y孫同學
y李同學yy
題目分析
#include using namespace std;
bool like[5] = ;
int ans[5]; // ans[id]表示分配給第id位同學的書的編號
bool p[5]; // p[i]為true說明第i本書已被分配;為false說明第i本書沒有被分配
// 這裡假設同學和書本的編號都從0開始
// check函式用於判斷當前的分配方案是否讓所有的同學都滿意
bool check()
// output函式用於輸出一種分配方案
void output()
// f(id)用於給第id位同學分配一本沒有分配的書
void f(int id)
for (int i = 0; i < 5; i ++)
}}int main()
搜尋入門練習題1 素數環 題解
題目出處 資訊學奧賽一本通 例5.1。題目描述 素數環 從 1 到 n 2 le n le 20 這 n 個數擺成乙個環,要求相鄰的兩個數的和是乙個素數。輸入格式 輸入包含乙個整數 n 2 le n le 20 輸出格式 按字典序從小到大的順序輸出所有排列方案,每個排列方案佔一行。每行的 n 個數之...
排序入門練習題8 整數奇偶排序 題解
題目出處 資訊學奧賽一本通 第二章上機練習6,略有改編 題目描述 告訴你包含 n 個數的陣列 a 你需要把他們按照 奇數排前面,偶數排後面 奇數從從小到大排,偶數從大到小排 的順序輸出。輸入格式 輸入的第一行包含乙個整數 n 1 le n le 1000 輸入的第二行包含 n 個整數 a 1,a 2...
搜尋入門練習題5 八皇后問題 題解
題目描述 輸出格式 輸出乙個整數,用於表示八皇后問題的放置方案。題目分析 首先我們用 x,y 來表示棋盤上第 x 行第 y 列的格仔的座標。那麼,兩個皇后 x 1,y 1 和 x 2,y 2 會互相攻擊當且僅當滿足如下條件之一 我們可以用深度優先搜尋來解決這道題。我們可以發現的是,要想在 8 tim...