【发布时间】:2014-03-19 18:41:11
【问题描述】:
我有以下课程:
internal class Course
{
public int CourseCode { get; set; }
public string DeptCode { get; set; }
public string Name { get; set; }
}
以下代码是我拥有的二维数组:
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,这确实是我上面写的2个组合。
LordTakkera 给出了完美的答案,非常感谢!
【问题讨论】:
-
很抱歉,如果我让它看起来像我希望人们为我编写代码。我的第一次尝试是我编写了一个代码,其中我有一个数组 Course[],所有可能的课程都没有分组。然后我得到了所有可能的组合,在这种情况下,n 是 7,k 是 3。然后我过滤所有结果以删除包含在一组中的重复项,以不允许在同一数组中包含相同类别的课程。虽然这是一个非常耗时的过程,所以我尝试找到另一种方法来做到这一点,这就是上面列出的方法。我尝试了很多 for 循环,但无法让它工作。 ://
标签: c# arrays combinations