Closed jingyutsao closed 3 years ago
https://judge.ccclub.io/status/2daccba59514c2e88d58747808637c21
#推薦系統 percent = int(input()) * 0.01 person_dict = {} ans_dict ={} while True: person = input().split(" ") # 是一個list喔 if person == ["end"]: break else: goods_set = set() goods_lst = [] for i in range(1, len(person)): goods_set.add(person[i]) goods_lst.append(person[i]) person_dict[person[0]] = [goods_set, goods_lst] # key = 人名;value = list[商品的set, 商品的list](因為後面要按出現順序排序所以要多生一個list QQ) for name, goods in person_dict.items(): ans_lst = [] for others, others_goods in person_dict.items(): #跟其他每個人比一次 def place(a): #下面要用的辣個東東出現的先後順序 return others_goods[1].index(a) if name != others: # 先排除自己喔啾咪 if len(goods[0].intersection(others_goods[0])) / len(goods[0]) >= percent: # 兩個人商品的聯集的個數 / 辣個人商品的數量 要大於條件的比例 for j in sorted(list(others_goods[0].difference(goods[0])), key = place): # 別人有但我沒有的先用差集生出set,set再轉list排序 if j not in ans_lst: # 沒有出現過的再加進答案集 ans_lst.append(j) ans_dict[name] = ans_lst # 名字對應答案商品! for ans_name, ans_goods in ans_dict.items(): #如果是空集合就print名字就好,有商品就正常print if goods == []: print(ans_name) else: print(ans_name + " " + str(" ".join(ans_goods)))
過程如程式碼中附註(本來是寫給我自己看的所以可以忽略那個語氣😅) 又是測資都對但wrong answer 的一天... 麻煩助教告訴我我是哪裡寫錯或想錯了嗎?
最後輸出的時候變數名稱用錯了喔~if goods == [] 這個條件應該就永遠都不會成立吧
if goods == []
啊啊啊!!!改了就accepted了!!!非常感謝~~~
提交連結
https://judge.ccclub.io/status/2daccba59514c2e88d58747808637c21
程式碼
錯誤訊息
問題描述
過程如程式碼中附註(本來是寫給我自己看的所以可以忽略那個語氣😅) 又是測資都對但wrong answer 的一天... 麻煩助教告訴我我是哪裡寫錯或想錯了嗎?