分书问题
来源:互联网 发布:ins图片下载软件 编辑:程序博客网 时间:2024/05/17 00:19
Time Limit: 1000 ms Memory Limit: 256 MB
Total Submission: 41 Submission Accepted: 16
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
OriginalTransformed50011011001011000001001001
5[EOL] 00110[EOL] 11001[EOL] 01100[EOL] 00010[EOL] 01001[EOF]
Sample Output
OriginalTransformed1
#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<iostream>#include<algorithm>#include<queue>#include<stack>#include<sstream>#include<map>//#define DEBUGconst int maxn =50;using namespace std;char G[maxn][maxn];vector<int>book[maxn];int visited[maxn];int ans, n;void dfs(int x);int main() {#ifdef DEBUGfreopen("Text.txt", "r", stdin);#endif // DEBUGcin.tie(0);cin.sync_with_stdio(false);while (cin >> n) {memset(book, 0, sizeof(book));memset(visited, 0, sizeof(visited));ans = 0;int i, j;for (i = 0; i < n; i++)for (j = 0; j < n; j++)cin >> G[i][j];for (i = 0; i < n; i++) {for (j = 0; j < n; j++) {//cout << G[i][j] << ends;if (G[i][j] == '1')book[i].push_back(j);}//cout << endl;}dfs(0);cout << ans << endl;}return 0;}void dfs(int x) {if (x == n) {bool flag = 1;for (int i = 0; i < n; i++)if (visited[i] == 0)flag=0;if (flag)ans++;return;}for (int i = 0; i < book[x].size(); i++) {if (visited[book[x][i]] == 0) {visited[book[x][i]] = 1;dfs(x + 1);visited[book[x][i]] = 0;}}}
0 0
- 分书问题
- 分书问题
- 分书问题
- 分书问题
- 分书问题
- 分书问题 559NEFUOJ
- NEFU559 分书问题【递归】
- 分书问题(递归)
- 分书问题,递归调用
- 分书问题(搜索)
- 分书问题 暴力求解
- 分书和八皇后问题
- nefu559分书问题【类8皇后】
- nefu 分书问题 559 (递归)
- 分书问题(搜索)nefu559
- AOJ.863 分书问题 (DFS)
- 海盗分金块问题
- 水手分椰子问题
- Java并发-Java并发机制的底层实现原理
- 关于Logistic Regression、Softmax Loss和Cross-entropy的随笔
- 51单片机智能小车开<一>
- java记录三
- 第7章、关系数据库持久性与记录和Squeryl
- 分书问题
- 从MySQL中提取数据并对字段进行字符串处理
- 限制文本框或文本域只能输入数字、中文和英文等
- Qt第一个程序 HelloWorld
- Python生成随机数
- 不允许保存更改。您所做的更改要求删除并重新创建 以下表。您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建 表的更改"选项。
- AOJ.866 飞越原野
- JavaScript滚轮实现动态加载页面
- 软件光栅化渲染器(二)