資料結構應用 田徑賽的時間安排

2021-04-03 02:31:59 字數 544 閱讀 2830

假設某校的田徑選拔賽共設六個專案的比賽,即跳高、跳遠、標槍、鉛球、100公尺和200公尺短跑,規定每個選手至多參加三個專案的比賽。現有五名選手報名比賽,選手所選擇的專案如參賽選手比賽專案表所示。現在要求設計乙個競賽日程安排表,使得在盡可以短的時間內安排完比賽。

(1)為了能較好地解決這個問題,首先應該選擇乙個合適的資料結構來表示它。2表示該問題的資料結構模型圖如右下圖(圖中頂點代表競賽專案,在所有的兩個不能同時進行比賽的專案之間連上一條邊)。顯然同乙個選手選擇的幾個專案是不能在同一時間內比賽的,因此該選手選擇的專案中應該兩兩有邊相連。

(2)競賽專案的時間安排問題可以抽象為對無向圖進行"著色"操作:即用盡可能少的顏色去給圖中每個頂點著色,使得任意兩個有邊連線的相鄰頂點著上不同的顏色。每一種顏色表示乙個比賽時間,著上同一種顏色的頂點是可以安排在同一時間內競賽的專案。由此可得:只要安排4個不同的時間競賽即可。時間1內可以比賽跳高(a)和標槍(c),時間2內可以比賽跳遠(b)和鉛球(d),時間3和時間4內分別比賽100公尺(e)和200公尺(f)。

解決問題的乙個關鍵步驟是,選取合適的資料結構表示該問題,然後才能寫出有效的演算法。

Bloom Filter 資料結構的應用

應用1 儲存字典。大家可能對於 word 的拼寫檢查功能非常了解,當你拼錯乙個單詞的時候,word 會自動將這個單詞用紅線標註出來。word 的具體工作原理不得而知,但是在另乙個拼寫檢查器 unix spell checkers 這個軟體中用到了 bloom filter。unix spell ch...

資料結構 棧的應用

要求 首先將運算元棧opnd設為空棧,而將 作為運算子棧opter的棧底元素,這樣的目的是判斷表示式是否求值完畢 2 依次讀入表示式的每個字元,表示式須以 結尾,若是運算元則入棧opnd,若是運算子,則將此運算子c與opter的棧頂元素top比較優先順序後執行相應的操作,具體操作如下 i 若top的...

資料結構 堆的應用

public class heap 插入操作的 public void insert int value count a count value 插入後,從節點開始從下往上開始堆化,插入 自下往上堆化 int i count while i 2 0 a i a i 2 public int remo...