问题标题: 酷町堂:4051 选书

0
0
已解决
王子健
王子健
初级天翼
初级天翼

 

4051   选书

经验值:800

题目描述 Description

学校放寒假了,信息学竞赛辅导老师有A,B,C,D,E五本书,要分给参加培训的张,王,刘,孙,李五位同学,每个人只能选一本书,老师事先让每个人填在一张表格中,然后根据他们填写的表格来分配书,你能帮助老师设计一个程序求出所有的分配方案,让每一个学生都满意。

输入描述 Input Description

输入5*5的布尔型数组,喜欢这本书则输入1,不喜欢则输入0。第一行代表张同学对这五本书的喜好,第二行代表王同学对这五本书的喜好,第三行代表刘同学对这五本书的喜好,第四行代表孙同学对这五本书的喜好,第五行代表李同学对这五本书的喜好,

输出描述 Output Description

有多少种方案输出多少行,每行五个字符,分别代表张,王,刘,孙,李这五名同学得到的书本。按字典序排列

样例输入 Sample Input

0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1

样例输出 Sample Output

CABDE

 

没有任何思路,望大佬给出思路或者加我QQ回我:1708262261


0
已采纳
许金夫
许金夫
初级天翼
初级天翼

我是直接全排列,在一个一个比对。。。。。。思路来起来还行但是WA了

许金夫在2020-05-16 15:43:19追加了内容

啊,好消息!我刚刚做出来了!!!

这道题不要用上次的代码,要用全排列的代码~

将1011的代码找出来,把n不要输入,定义成5

然后输入BOOL数组(都会)

在最上面定义一个string s="0ABCDE"; //不要问我为什么

dfs里面一切正常,只是把if改一下//都会,跳过去,不细讲了

输出的时候吧cout<<pl[i]<<" ";改成cout<<s[pl[i]];

AC!

0
董子墨
董子墨
中级天翼
中级天翼

一、定义+输入(如果会,继续往下看;如果不会,别写这道题了)

二、搜索(这个数重点)

    函数里一个参数,表示要给第i个同学选书

        如果选完了,答案++,结束

        否则,遍历5本书,如果这本书没被选过而且这个同学喜欢这本书,那么选这本书

三、输出(不讲了)

董子墨在2020-05-14 17:26:56追加了内容

如果没看懂,评论里回我

0
我要回答