亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用于保存課程要求的數據結構

用于保存課程要求的數據結構

Smart貓小萌 2021-12-30 20:59:16
我正在努力尋找一種有效的方法來存儲課程內課程的要求。例如:通過B后可以參加A課程當您通過C和D課程時,您也可以參加A課程我希望能夠使用樹結構,這樣我就可以輕松檢查一個人是否通過了所有要求,但由于有多個選項可以通過要求,這是不可能的。你知道任何技術或數據結構來解決這個問題嗎?
查看完整描述

2 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

一個Course對象有一個對象列表Prerequisite,其中只有一個需要滿足。一個Prerequisite對象有需要的清單Course對象,所有這些都需要被傳遞的Prerequisite被對象實現。


public class Course {

    private List<Prerequisite> prerequisites;


    public boolean canBeTakenBy(Student student) {

        return prerequisites.isEmpty() ||

               prerequisites.stream().anyMatch(p -> p.isFulfilledBy(student));

    }

}


public class Prerequisite {

    private List<Course> requiredCourses;


    public boolean isFulfilledBy(Student student) {

        return requiredCourses.stream().allMatch(student::hasPassed);

    }

}


public class Student {

    private Set<Course> passedCourses;


    public boolean hasPassed(Course course) {

        return passedCourses.contains(course);

    }

}


查看完整回答
反對 回復 2021-12-30
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

有很多方法可以完成你想要的,我個人認為最簡單的就是擁有一個 ArrayList< ArrayList < Course > >

因此,例如,如果您想添加一個可能的要求選項,您可以ArrayList使用課程創建一個并將其推送到要求的末尾。

稍后檢查它,只需運行組合,復雜性應該不是問題,例如,如果您有 10 個可能的要求,每個要求 10 個課程,最壞的情況是 10x10 循環,102 到計算機與沒有相同根本。

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html


查看完整回答
反對 回復 2021-12-30
  • 2 回答
  • 0 關注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號