nefu559分书问题【类8皇后】
2015-09-21 20:27
211 查看
description |
[code] 有编号分别为1..n的n本书,准备分 给n个人,每个人阅读兴趣用一个二 维数组加以描述: 1:喜欢这本书 0:不喜欢这本书 Like[i][j] = 1 i 喜欢书j Like[i][j] = 0 i 不喜欢书j 求解如何分书,让所有人都满意。 |
input |
[code] 输入有多组数据,每组数据第一行,包含一个的正整数n. (0 < n <= 120). 接下来n行每行n个数。 |
output |
[code] 每组测试实例,输出一行,输出第i个分得的书的编号。每两个数据中间有个空格。 (默认从做到右依次是第1个人,第2个人…第n个人。) 若有多个答案,输出序列数小的那组。如 2 3 1 5 4和1 5 4 3 2 则输出1 5 4 3 2。因为(15432<23154) |
sample_input |
[code] 2 0 1 1 1 |
sample_output |
[code] 2 1 |
这要是让我现在做 十之八九得往二分匹配图的方向靠→_→而对于题干一样的题方法真是差远了去了==
#include <iostream> #include<cstdio> #include<cstring> using namespace std; int map[130][130]; int ans[130],n; bool vis[130]; bool search(int m) { if(m==n) return true; for(int i=0;i<n;i++) if(!vis[i]&&map[m][i]) { ans[m]=i+1; vis[i]=1; if(search(m+1)) return true; vis[i]=0; } return false; } int main() { while(~scanf("%d",&n)) { memset(vis,0,sizeof(vis)); memset(ans,0,sizeof(ans)); for(int i=0;i<n;i++) for(int j=0;j<n;j++) scanf("%d",&map[i][j]); if(search(0)) { for(int i=0;i<n;i++) printf("%d ",ans[i]); printf("\n"); } } }
相关文章推荐
- Redis和Memcache的区别分析
- bzoj1673:天平
- [UI基础]day01
- Java8揭秘(四)Java集合类库的批量数据操作
- UC/OS II 软件定时器
- 1008. 数组元素循环右移问题 (20)
- 嵌入式软件开发——嵌入式软件工程师笔试题
- 我们神码小组第一次合作完成的java项目——类的多态继承与接口的使用练习。
- Win8系统下Oracle 11g release 2 安装流程记录
- 旋转六面体源码
- 0917 实验一 词法分析程序
- 软链接/硬链接
- Linux环境变量的设置和查看方法 http://soft.chinabyte.com/os/169/11412169.shtml
- Java 垃圾回收机制 GC的算法和操作
- toCharArry()和chatAT()
- 机器学习规范的规则(两)核电规范与规则的偏好
- Java8揭秘(三)Default 方法
- 有关内存的思考?GetMemory()
- 我的第一篇文章-----------为了更好的明天。
- Android Message和obtainMessage的区别