搜尋入門練習題8 選書 題解

2022-08-19 22:06:10 字數 694 閱讀 9668

題目出處:《資訊學奧賽一本通》例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...