我有以下類:有序唯一組合
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