分书问题 559NEFUOJ
来源:互联网 发布:淘宝客服一直不回复 编辑:程序博客网 时间:2024/05/02 01:33
东林acm
description
有编号分别为1..n的n本书,准备分给n个人,每个人阅读兴趣用一个二维数组加以描述: 1:喜欢这本书0:不喜欢这本书Like[i][j] = 1 i 喜欢书jLike[i][j] = 0 i 不喜欢书j求解如何分书,让所有人都满意。
input
输入有多组数据,每组数据第一行,包含一个的正整数n.(0 < n <= 120).接下来n行每行n个数。
output
每组测试实例,输出一行,输出第i个分得的书的编号。每两个数据中间有个空格。(默认从做到右依次是第1个人,第2个人…第n个人。) 若有多个答案,输出序列数小的那组。如 2 3 1 5 4和1 5 4 3 2 则输出1 5 4 3 2。因为(15432<23154)
sample_input
20 11 1
sample_output
2 1
这个题我终于做出来了!!注意回溯,这是这道题的关键所在。网上有个类似题的讲解 人家讲的很好,我就不多说了,下面是我的代码……
#include <iostream>#include <cstdio>#include <string.h>using namespace std;int a[1005][1005],bol[1005],ab[1005];int p(int i,int n){ int j; if(i==n+1) return 1; for(j=1;j<=n;j++) { if(a[i][j]==1&&bol[j]==0) { ab[i]=j; bol[j]=1; if(p(i+1,n)) return 1; bol[j]=0; } } return 0;}int main(){ int n,i,j; while(~scanf("%d",&n)) { memset(bol,0,sizeof(bol)); memset(ab,0,sizeof(ab)); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&a[i][j]); i=1; p(i,n); for(i=1;i<=n;i++) printf(i==n?"%d\n":"%d ",ab[i]); } return 0;}
0 0
- 分书问题 559NEFUOJ
- nefuoj-904:删数问题
- NEFUOJ 208 宫锁珠帘(最短路径问题)
- nefu 分书问题 559 (递归)
- 分书问题
- 分书问题
- 分书问题
- 分书问题
- 分书问题
- NEFU559 分书问题【递归】
- 分书问题(递归)
- 分书问题,递归调用
- 分书问题(搜索)
- 分书问题 暴力求解
- nefuoj-1120:天平称重
- nefuoj-943:黑屏
- nefuoj-813:good
- nefuoj-834:Hrbust 集训队
- 两个有序数组的合并算法
- 2014年显示屏将会向什么方向发展?采用量子点最新技术
- nested exception is java.lang.NoClassDefFoundError
- 应用程序arm-linux- 编译命令
- block与inline的区别
- 分书问题 559NEFUOJ
- ARM Linux内核驱动异常定位方法分析--反汇编方式
- 2013年总结
- 黑马程序员——ref 和 out 传参的用法实例
- Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask
- Linux系统下CPU频率的调整
- 黑马程序员——构造函数和析构函数
- 装好oracle后查看其版本
- hdu 1232 畅通工程