Python實現會場安排演算法 最小會場數

2021-09-26 18:50:49 字數 1084 閱讀 2864

假設在足夠多的會場裡安排一批活動,並且希望使用盡可能少的會場,設計乙個有效的貪心演算法。(這個問題實際上是註明的圖著色問題。即將每乙個活動作為圖的乙個頂點,不相容活動間用邊相連。使相鄰的頂點著不同顏色的最小這色數,響應於要找的最小會場數)。

對於最少活動會場的問題,主要是比較開始時間和結束時間。只要下乙個活動的開始時間在上乙個活動的結束時間之後,就能判斷他們可以安排在同乙個會場。需要注意的是在一開始,就有乙個活動已經佔據了乙個會場,後面才用其他的活動來比較。

看過我演算法程式的應該都知道,我最習慣的就是很少用input型的語句,一般都是使用文字讀入的方法獲取資料,所以要先建立乙個txt文件,再將資料按照格式存放到裡面。

輸入資料:(第1行為多少個活動,第二行開始第乙個數字表示開始時間,第二個數字為結束時間)

51 23

12 28

25 35

27 80

36 50

輸出資料:

3

f=open('work4-1 input.txt','r')

s=f.read()

f.close()

lastsum = #儲存滿足條件的元素

a = #儲存input檔案的資料流

a = s.split()#分割在input中讀取到的資料流

n=int(a[0])#讀取第一位陣列元素,儲存為活動的總個數

print("總計需要安排",a[0],"個活動")

beg = #儲存開始時間

for i in range(1,len(a),2):

end = #儲存結束時間

for i in range(2, len(a), 2):

s = [int(x) for x in beg]

e = [int(x) for x in end]

def getsum(s=,f=):#定義演算法

j=0for i in range(len(s)):

if s[i]>=f[j]: #如果第下個活動的開始時間大於或等於上個活動的結束時間

j=igetsum(s,e)

print('需要的最少會場數為:',len(lastsum))

貪心演算法實現會場安排問題

演算法概述 貪心演算法 又稱貪婪演算法 是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的...

會場安排問題 貪心演算法

描述 學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如何安排。輸入 第一行是乙個整型數m m 100 表示共有m組測試資...

會場安排問題之貪心演算法

會場安排問題 時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動...