我有以下类:有序唯一组合
internal class Course
{
public int CourseCode { get; set; }
public string DeptCode { get; set; }
public string Name { get; set; }
}
和下面的代码是2维数组我有:
Course[][] courses = new Course[3][];
courses[0] = new Course[] {
new Course() { CourseCode = 100, DeptCode = "EGR", Name = "EGR A" },
new Course() { CourseCode = 100, DeptCode = "EGR", Name = "EGR B" }
};
courses[1] = new Course[] {
new Course() { CourseCode = 200, DeptCode = "EN", Name = "EN A" }
};
courses[2] = new Course[] {
new Course() { CourseCode = 300, DeptCode = "PHY", Name = "PHY A" }
};
我想要做的就是让不同的组合,每个一个小组中的项目可以与其他小组一起处理;例如与前面的代码,结果将是:
1. EGR A - EN A - PHY A
2. EGR B - EN A - PHY A
回答: 要获得可能的组合的数量,我们可以使用Rule of Product,在上述情况下,可能的组合将是(2 * 1 * 1)= 2这确实是我上面写的两个组合。
LordTakkera给出了完美的答案,非常感谢!
如果我让它看起来像我希望人们为我写代码,我很抱歉。我的第一个尝试是我编写了一个代码,在其中我有一个数组Course [],所有可能的课程没有分组。然后,我得到了所有可能的组合,在这种情况下,n是7,k是3. 然后,我筛选了所有结果,以将包含在一个组中的重复项删除,以避免在同一个数组中包含相同的类别课程。 虽然这是一个非常耗时的过程,所以我试着找到另一种方法来做到这一点,这是上面列出的一个方法。我尝试了很多for循环,但无法使其工作。 :/ – user3439065