分書問題(搜尋)

2021-07-31 02:01:05 字數 1182 閱讀 2917

d. 分書問題

time limit: 1000 ms   memory limit: 256 mb

total submission: 41   submission accepted: 16

judge by case

description

已知有n本書(從1~n編號)和n個人(從1~n編號),每個人都有乙個自己喜愛的書的列表,現在請你編寫乙個程式,設計一種分書方案,使得每個人都能獲得一本書,且這本書一定要在他的喜愛列表中。

input

輸入資料共若干行,第一行為乙個正整數n(n <= 20),從第2行到第n+1行,每行有n個0或1組成,第k行表示編號為k-1的人對這n本書的喜好列表,0表示不喜歡,1表示喜歡。

output

輸出資料僅乙個整數,表示符合條件的分配方案的總數。

sample input

original

transformed

5

00110

11001

01100

00010

01001

sample output

original

transformed

1
題目分析:這個題目我是用dfs做的,dfs好久沒有寫了,還好,雖然耗時有點長,但是最後還是寫出來了。主要是中間那個標誌陣列太菜了,本來可以用乙個一維陣列vis【i】表示第i本書是否已經被借走,我剛開始一直用二維陣列,搞得好尷尬。不知道怎麼恢復這個陣列的標誌位。後來一維陣列之後才發現,是在利用過這個之後就直接恢復的。也是我dfs不夠熟練吧。

#include #include #include #include #include using namespace std;

char a[25][25];

bool vis[25];

int ans,flag;

int n;

int cou[25];

void dfs(int m,int k)

//如果到達最終邊,直接ans++;

vis[i] = 0;

} }

}int main()

ans=0;

for(int i=1;i<=n;i++)

}cout

}

nefu559 分書問題 w

有編號分別為1.n的n本書,準備分 給n個人,每個人閱讀興趣用乙個二 維陣列加以描述 1 喜歡這本書 0 不喜歡這本書 like i j 1 i 喜歡書j like i j 0 i 不喜歡書j 求解如何分書,讓所有人都滿意。輸入有多組資料,每組資料第一行,包含乙個的正整數n.0 n 120 接下來n...

問題 I 搜尋 裝箱問題

題目描述 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求從m個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入第1行兩個整數v和n。第2行n個數,表示n個物品的體積。輸出乙個整數,表示箱子剩餘空間。複製樣例資料 24 6 8 3...

問題 A 過河問題 搜尋樹

多個囚犯參與者要過河,其中只有監管者一人可以划船。小船每次最多載兩人過河。監管者不在時,已有積怨的囚犯可能會鬥毆。請問他們該如何安全過河?假設一開始所有人都在河的左岸,用0表示,如果成功過河,則到達河的右岸,用1表示。請採用bfs求解,並輸出過河過程。首先輸入要過河的人數n 包括監管者和囚犯 接著輸...