1. 剛哥的直播
時間限制: 3000MS
記憶體限制: 589824KB
題目描述:
2020年,直播已經成為去哪兒網酒店預售的新武器,去哪兒網CEO剛哥想從公司的m名員工中挑選n名參與自己的直播,已知m小于100請問一共有多少種選法,
輸入描述
m(公司員工數)
n (挑選的員工數)
輸出描述
p(挑選方法)
樣例輸入
4
2
樣例輸出
6
思路
本題為組合數求解問題,最終求解目標為
C
m
n
C_m^n
Cmn?,
代碼實作
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)
樣例輸入
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)])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/124880.html
標籤:其他
上一篇:JavaScript調戲了上帝
下一篇:建站很low的問題,求助!
