回溯如何解决这个问题?向量?

时间:2019-04-28 09:30:05

标签: c++

大家好,我是编程新手,但遇到了这个问题,我不知道该怎么做:

我想也许我可以使用列表,向量或回溯,但这只是想法。我不知道该怎么实现。

  

数据结构老师希望向学生分发项目,以便他们参加FILS科学会议。她准备了k个项目,并且有n个学生想参加(n> = k)。每个项目必须至少给出一次,但是n名学生可以团队合作实施某个项目。这意味着将每个项目分配给一个由1个或多个学生组成的学生团队。将从控制台读取n和k值,以及主题名称和学生姓名。

     

您将必须:
  在控制台上,以以下形式显示将k个项目分配给n个学生的所有可能性以及可能的解决方案数:

     

对于n = 3(学生),k = 2(项目)
  有6种解决方案:

Tom - "Java Animation " , Jane - "Java Animation" , Kate - "3D Game"
Tom - "Java Animation " , Jane - "3D Game" , Kate - "Java Animation"
Tom - "Java Animation " , Jane - "3D Game" , Kate - "3D Game"
Tom - "3D Game " , Jane - "Java Animation" , Kate - "Java Animation"
Tom - "3D Game " , Jane - "Java Animation" , Kate - "3D Game"
Tom - "3D Game " , Jane - "3D Game" , Kate - "Java Animation"

有人可以帮忙吗?编程语言是C ++。我当时在考虑使用回溯,但我没有具体的使用方法。

1 个答案:

答案 0 :(得分:0)

我建议您从实施开始,就是一个功能,它将单个项目的所有可能任务分配给一组学生;然后做同样的事情,但是当一些学生不可用时;那么您可以使用回溯和递归来分配第一个项目,然后分配第二个项目,并分配第一个等。

希望这会有所帮助。