背景
在我学校的 11 年级,我们需要从预定义的科目列表中选修 4 门科目和英语。今天,我们得到了一个网格,可以帮助我们进行组合,这样您就只能从每一列中选择一个主题。
网格
| Economics | Maths | Psychology/Politcal Science | English | Geography |
| Hindi/Psychology | History | Sociology | Art | Elective English |
| Maths | Account | Commerce | Economics | English |
| English | Physics | Chemistry | Biology/Computer Applications/Mecahnical drawing | Maths |
问题
我正在尝试编写一个程序来列出该表中所有可能的合法组合。规则是:
- 必须有英语
- 总共必须只有五个科目(英语+ 4)
- 没有两个主题可以来自同一列
- 最后五门科目不得重复(注意选修英语和英语是不同的科目)
现在,如果它是一个正常的 4 x 5 矩阵,这将是一个非常简单的任务。但是,[第 1 行第 3 列]、[第 2 行第 1 列] 和 [第 4 行第 4 列] 包含多个主题,您仍然只能从中选择一个。因此,与任何这些单元格的任何组合都可以细分为更多组合。
我很难为此提出一个算法。我不是要求免费代码,而是帮助算法。我对大多数主要语言(Java、JavaScript、PHP 等)都很熟悉,并且伪代码和流程图也可以使用。