1. 剛哥的直播
時間限制: 3000MS
內存限制: 589824KB
題目描述:
2020年,直播已經成爲去哪兒網酒店預售的新武器,去哪兒網CEO剛哥想從公司的m名員工中挑選n名參與本身的直播,已知m小於100請問一共有多少種選法。
輸入描述
python
m(公司員工數) n (挑選的員工數)
輸出描述app
p(挑選方法)
樣例輸入ui
4 2
樣例輸出spa
6
思路
本題爲組合數求解問題。最終求解目標爲 C m n C_m^n Cmn。
代碼實現
code
m = int(input()) n = int(input()) re,div = 1,1 for i in range(n): re*=m-i div*=(i+1) print(re//div)
2. 一期需求-2021年校招用題
時間限制: 5000MS
內存限制: 589824KB
題目描述:
每週二是去哪兒網集體過需求Final Review的時候,針對機票的報價排序,運營總監小天和產品總監老馮產生了一些不一樣意見,小天認爲報價順序應該是按照 a、f、d、e、z的順序來作報價列表排序,老馮認爲應該按照f、a、e、d、z的順序來作列表排序,兩人爭執不下,技術總監這時站了出來,認爲他們其實大多數意見是一致的,只有少數不一致,能夠先把意見一致的排序做爲一期作上去,有爭議的後續再來作,那麼若是一期本着把小天和老馮報價順序意見一致的報價先作上去,那麼最多能夠作上去多少個報價的排序。
輸入描述
排序
7(多少個報價) a b c d e f g b d a c f g e
輸出描述內存
4(b d f g)
樣例輸入input
7 a b c d e f g b d a c f g e
樣例輸出直播
4
思路
最長公共子序列問題,經過dp求解。
代碼實現
產品
N = int(input()) yy = input().split() cp = input().split() dp = [[0]*N for _ in range(N)] for i in range(N): if yy[i]==cp[0]: dp[i][0]=dp[0][i]=1 if cp[i]==yy[0]: dp[i][0]=dp[0][i]=1 for i in range(1,N): for j in range(1,N): if yy[i]==cp[j]: dp[i][j]=max(dp[i-1][j],dp[i][j-1])+1 else: dp[i][j] = max(dp[i-1][j],dp[i][j-1]) print(dp[-1][-1])
3. 撲克牌的牌型分析-2021技術
時間限制: 3000MS
內存限制: 589824KB
題目描述:
德州撲克的花型由N 張撲克牌組成 0 < N < 8,能夠組成的牌型按照價值從高到低來區分分別爲:
1.皇家同花順:最高爲Ace(一點)的同花順。 如A K Q J 10 的同花順 2.同花順:同一花色,五張順序的牌。 如:K Q J 10 9 的同花順 3.四條:有四張同一點數的牌。 如:4 4 4 4 9 4.葫蘆:三張同一點數的牌,加一對其餘點數的牌。 如:3 3 3 10 10 5.同花:五張同一花色的牌。 如:J 10 8 7 5 的全是紅桃的牌 6.順子:五張順連的牌。 如:5 4 3 2 A 的非同花牌(此牌型爲最小的順子) 7.三條:僅有三張同一點數的牌,其他兩張點數不一樣。 如: 9 9 9 5 3 8:兩對:兩張相同點數的牌,加另外兩張相同點數的牌。 如:K K 5 5 2 9.一對:僅有兩張相同點數的牌。 如:10 10 9 4 2 10.高牌:不符合上面任何一種牌型的牌型,由單牌且不連續不一樣花的組成,以點數決定大小。 如:A 10 9 5 3 的非同花的牌
這十種牌型分別輸出 HuangJiaTongHuaShun、TongHuaShun、SiTiao、HuLu、TongHua、ShunZi、SanTiao、LiangDui、YiDui、GaoPai
撲克牌有4種花色,分別爲 (S表示黑桃,H表示紅心,C表示草花,D表示方片)
本題的輸入爲任意 小於 8 的 N張牌
獲得的結果爲這些牌中排序最靠前的類型。
輸入描述
2(牌數爲2) SA HA (兩張牌爲黑桃A 紅心A)
輸出描述
YiDui (結果爲一對)
樣例輸入
5 SA SK SQ SJ S10
樣例輸出
HuangJiaTongHuaShun
思路
該問題須要考慮全部可能出現的狀況,首先考慮全部的花色可能出現的狀況;以後考慮數量全部的狀況(四條、三條、葫蘆…),最後考慮順子的狀況。
代碼實現
N = int(input()) pocket = input().split() from collections import defaultdict huase = defaultdict(list) pik = defaultdict(list) for i in pocket: huase[i[0]].append(i[1:]) pik[i[1:]].append(i[0]) re = ['HuangJiaTongHuaShun','TongHuaShun','SiTiao','HuLu','TongHua','ShunZi','SanTiao','LiangDui','YiDui','GaoPai'] res = [len(re)-1] a = ['2','3','4','5','6','7','8','9','10','J','Q','K','A'] for t in 'SHCD': if len(huase[t])>=5: res.append(4) temp = [a.index(i) for i in huase[t]] if 12 in temp: temp.append(-1) temp.sort(reverse=True) for i in range(len(temp)-4): if temp[i]-4==temp[i+4]: if temp[i]==12: res.append(0) else: res.append(1) for i in a: if len(pik[i])==4: res.append(2) if len(pik[i])==3: if 6 in res or 8 in res: res.append(3) res.append(6) if len(pik[i])==2: if 6 in res: res.append(3) if 8 in res: res.append(7) res.append(8) t = [a.index(i) for i in pik if pik[i]!=[]] if len(t)>=5: if 12 in t: t.append(-1) t.sort(reverse=True) for i in range(len(t)-4): if t[i]-4==t[i+4]: res.append(5) print(re[min(res)])