
'''1.⼩⽩去附近店鋪買橘⼦,⽬前商店做活動,提供捆綁打包銷售,例如每袋3個和每 袋5個的形式出售。現⼩⽩只想購買n個橘⼦,同時想購買盡量少的袋數⽅便攜帶。如 果不能購買恰好n個橘⼦,就不會購買(可返回-1),求解輸出最少的袋數。(例如: 18) ''' # def getnum(n): # ''' # 解題思路: # 5的k倍 返回K # 5的k倍+3 返回K+1 # 否則不購買 返回-1 # :param n: # :return: # ''' # n = int(n) # if n%5 == 0: # return n//5 # if n%5 == 3: # return n//5+1 # return -1 # if __name__ == '__main__': # for i in range(20): # print(f'買{i}個橘子,最少袋數為{getnum(i)}') ''' 第二題: ⼩紅去超時買玩具,⼝袋懷揣了n張錢,買了⼀個價值m的玩具。錢的⾯額可以 是1元、5元、10元、50元,⽽⼩紅擁有的錢中有的⾯額可能沒有,問,付錢的時 候,會有多少種可能的付費組合⽅式? 輸⼊:輸⼊兩個數n(多少張錢),m(玩具的價格) 輸出:請輸出可能的組合⽅式數; ''' # def outthings(n,m): # ''' # n為張數,m為價格 # 滿足兩個等式,即可 # :param n: # :param m: # :return: # ''' # for a in range(m//1+1): # for b in range(m // 5 + 1): # for c in range(m // 10 + 1): # for d in range(m // 50 + 1): # if (a+b+c+d) == n and (a*1+b*5+c*10+d*50) == m: # print(f'{a}張1,{b}張5,{c}張10,{d}扎根50') # # if __name__ == '__main__': # outthings(10,100) ''' 3.我們公司⽻⽑球隊開始招新了,計划招收x⼈,每個⼈根據⽔平划分⾃⼰的級別 檔位1~8級別 現計划按⼀下要求分成2個隊伍(1隊、2隊) 1)1隊的成員級別之和⼤於2對成員級別之和 2)1隊的任意⼀名隊員,如果分配他去到2隊,1隊的成員級別之和就會嚴格⼩於2對 成員級別之和 3)每個隊員必須要加⼊⼀個隊伍 現在有多少⽅案可以完成上⾯分配 例如招收4⼈,⽔平級別分別:5 4 7 6 有⼏種分隊⽅案 ''' # def fun(arr,arr1,arr2): # ''' # 這個考慮到4個for循環太麻煩了,決定用遞歸 # 遞歸把列表分為兩組, # 然后等分完以后進行判斷,需要滿足兩個條件 # 1.1隊的數據和 大於 2隊的數據和 # 2.1隊減去最小值 小於 2隊加上1隊的最小值 # # :param arr: # :param arr1: # :param arr2: # :return: # ''' # if arr: # for i in range(1,3): # if i == 1: # fun(arr[1:], arr1+[arr[0]], arr2) # else: # fun(arr[1:], arr1, arr2 + [arr[0]]) # else: # if sum(arr1) > sum(arr2) and (sum(arr1) - min(arr1)) < (sum(arr2) + min(arr1)): # print(arr,arr1,arr2) # # arr = [5,4,7,6] # arr1,arr2 =[],[] # fun(arr,arr1,arr2) ''' 4. 系統設計題 1)請分析題⽬需求,給出你認為合理的技術⽅案,技術⽅案格式可參考原公司; 2)請充分通過題⽬展現你的設計⽅法,設計理念。對於關鍵的技術選型,給出適當注 解; 需求描述:設計⼀個服務,任何⼈調⽤這個服務,都返回⼀個unique id,不能重復; ''' ''' 解:不會 ''' # class People(): # def __init__(self,ID): # self.ID = ID