和尚挑水問題
題目描述
某寺廟裡7個和尚:輪流挑水,為了和其他任務不能衝突,各人將有空天數列出如下表:
和尚1: 星期二,四;
和尚2: 星期一,六;
和尚3: 星期三,日;
和尚4: 星期五;
和尚5: 星期一,四,六;
和尚6: 星期二,五;
和尚7: 星期三,六,日;
請將所有合理的挑水時間安排表
樣例輸入:
input:
樣例輸出:
output:
方案1:
星期1和尚2挑水
星期2和尚6挑水
星期3和尚3挑水
星期4和尚1挑水
星期5和尚4挑水
星期6和尚5挑水
星期7和尚7挑水
方案2:
星期1和尚2挑水
星期2和尚6挑水
星期3和尚7挑水
星期4和尚1挑水
星期5和尚4挑水
星期6和尚5挑水
星期7和尚3挑水
方案3:
星期1和尚5挑水
星期2和尚6挑水
星期3和尚3挑水
星期4和尚1挑水
星期5和尚4挑水
星期6和尚2挑水
星期7和尚7挑水
方案4:
星期1和尚5挑水
星期2和尚6挑水
星期3和尚7挑水
星期4和尚1挑水
星期5和尚4挑水
星期6和尚2挑水
星期7和尚3挑水
共有4種方案
[解題思路]
很明顯的深度優先搜尋,在各人有空的表中(二維陣列),按天數(列)遍歷,發現符合的和尚(行),因為乙個和尚只挑依次水,所以標記當前行和當前列為1,表示已用。
繼續按天數(列)遍歷,直到星期7,依次判斷和尚是否有空,符合則輸出,回溯。
#includeusing namespace std;
//初始化
const int n=8;
const int d=8;
int table[n][d]=;
int note[n][d]=; //記錄當前值是否可用
int ans[8]; //每個方案的值
int sum=0; //統計多少個方案
//完成輸入
void input()
//輸出方案
第二週作業
實驗作業 1.編寫調式執行第乙個c 程式,要求輸出你的班級 姓名和學號 2.輸入課本例題1.2,除錯執行程式,並分析程式。3.分析程式中哪些是識別符號,哪些是關鍵字。4.回答什麼是程式 工程,原始檔 目標檔案 執行檔案 編譯預處理 名字空間 函式.主函式 功能 顯示輸出班級 姓名 學號 includ...
第二週作業
第一題 include stdafx.h int main int argc,char argv 第二題 include using namespace std int max int x,int y int main 好吧,老師我實在不知道錯在 啊。我都是照著書本來打的,打了幾次還是這樣。第三題 ...
第二週作業
作業1 輸出學生的班級 姓名和學號 include using namespace std int main 以下是主函式 int main 主函式 int number1,number2 定義兩個基本整型變數 number1和number2 cout 請輸入兩個數 輸出 請輸入兩個數 cin nu...