回溯python或c++;
问题是: 考虑到学生在一周的一天中至少有一节数学课,最多有3节,无论如何混合,输出在一周的5天内混合3节数学课、3节pc编程课、2节物理课的所有可能性” M:[数学,数学,数学]回溯python或c++;,python,backtracking,Python,Backtracking,问题是: 考虑到学生在一周的一天中至少有一节数学课,最多有3节,无论如何混合,输出在一周的5天内混合3节数学课、3节pc编程课、2节物理课的所有可能性” M:[数学,数学,数学] T:[pc程序,pc程序] W:[pc程序] T:[物理学] F:[物理学] 我在Python中有一个想法,创建一个包含15个元素的列表,该列表将包含一周15/5=3的所有类(学生可以拥有的最大类),因此对于上面的示例,该列表将类似于[m,m,m,cs,cs,0,cs,0,0,p,0,0,p,0,0]但我真的不知道如何
T:[pc程序,pc程序]
W:[pc程序]
T:[物理学]
F:[物理学]
我在Python中有一个想法,创建一个包含15个元素的列表,该列表将包含一周15/5=3的所有类(学生可以拥有的最大类),因此对于上面的示例,该列表将类似于
[m,m,m,cs,cs,0,cs,0,0,p,0,0,p,0,0]
但我真的不知道如何使用回溯生成所有列表。你能给我一些想法吗?首先尝试解决一个更简单的问题。尝试输出所有可能的值,以混合具有两个以上约束的类:
M: m, cs
T: 0
W: cs
T: p
F: p
在下一步中,我们必须添加一个cs类。如上所述,我们将只在几天后(即周四和周五)进行尝试。这需要一些考虑,但您应该能够理解,如果我们不添加此限制,则会多次发现某些可能性
在两种情况下,递归结束:
- 如果所有的类都被分配到某一天,我们就会找到一个可能的分配,并输出它
- 如果在下一步中,我们需要将类别A分配给某一天,但A已经分配给一周中的某一天,例如X,并且X之后的所有天都有3个类别已经分配给他们,那么我们无法为A找到可能的日期,因此在该分支中找不到可能的解决方案
我真的希望这个答案有帮助。我可以写下我上面提到的所有问题的解决方案,但我更愿意尝试给你一些技巧,告诉你如何自己解决这些问题,这样你就可以自己动手了。这看起来像是家庭作业,所以我添加了标签。如果我错了,请随意删除。不,我实际上在学习回溯的概念,我解决了一些问题,但它们只涉及简单的排列/安排,我想尝试更难的排列/安排,但需要这一个的想法。