1. 程式人生 > 其它 >食堂評測(python實現)

食堂評測(python實現)

技術標籤:程式碼python演算法

食堂測評(通訊網理論基礎)

成都某大學已建成n座食堂。國慶期間,小朱同學受朋友小白的邀請,評測該大學的食堂。每座食堂在大眾點評上有一定的評分,每測評一個食堂獲得該食堂分數;同時,每座食堂也有一定概率吃到衛生不達標的食物。小朱要想盡一切辦法,打卡得到儘可能多的分數。現在,為了保證晚上能愉快的玩耍,小白設定了一個踩坑概率。他認為只要概率低於這個水平,他們就不會鬧肚子。

輸入:第一行樣例數量t。對每一個樣例,第一行為踩坑概率P(浮點數),和食堂數量n<1000,之後n行,每行為一個評分m<10000,一個概率p(浮點數)。
輸出:對於每一個樣例,輸出打卡到的最大評分。

樣例:
輸入
3
0.04 3
1 0.02
2 0.03
3 0.05
0.06 3
2 0.03
2 0.03
3 0.05
0.13
1 0.03
2 0.02
3 0.05
輸出:
2
4
6

題目分析:
採用01揹包思路進行處理解決。

import sys, time,math
start_1=time.time()
ML=0
M1=[]
M1_S=[]
M2_P=[]
Memory_formal=[]
Memory_latter=[]
cou=0

def backet(M1_S,M2_P,Cap):
    if cou==1:
        for item in range(Cap+1):
            Memory_latter.
append(0) for i in range(len(M1_S)): Memory_formal.clear() for i0 in range(len(Memory_latter)): Memory_formal.append(Memory_latter[i0]) for item in range(1,Cap+1): if M1_S[i] <= Cap: if item-M1_S[i]<0: Memory_latter[
item] = Memory_formal[item] else: if(Memory_formal[item] > Memory_formal[item-M1_S[i]]+M2_P[i]): Memory_latter[item]=Memory_formal[item] else: Memory_latter[item]=Memory_formal[item-M1_S[i]]+M2_P[i] f = open('1.txt', 'r') Count=int(f.readline()) for item1 in range(Count): cou=0 M1.clear() M1_S.clear() M2_P.clear() ML=0 Memory_formal.clear() Memory_latter.clear() Cap,Num=f.readline().split() Num=int(Num) for item2 in range(Num): a,b=f.readline().split() ml=len(b) if(ML<ml): ML=ml M1.append(eval(b)) M2_P.append(int(eval(a))) Cap=int(eval(Cap)*(10**(ML-2))) for item3 in range(Num): M1_S.append(int((M1[item3])*(10**(ML-2)))) cou=cou+1 backet(M1_S,M2_P,Cap) print(Memory_latter[-1]) end_1= time.time() print('Running time: %s Seconds' % (end_1 - start_1))

讀取資料存放至txt文件中即可。

測試結果如下:
在這裡插入圖片描述