2017 美團程式設計題

2021-08-26 02:44:06 字數 3000 閱讀 9313

[程式設計題] 大富翁遊戲

大富翁遊戲,玩家根據骰子的點數決定走的步數,即骰子點數為1時可以走一步,點數為2時可以走兩步,點數為n時可以走n步。求玩家走到第n步(n<=骰子最大點數且是方法的唯一入參)時,總共有多少種投骰子的方法。 

輸入描述:

輸入包括乙個整數n,(1 ≤ n ≤ 6)

輸出描述:

輸出乙個整數,表示投骰子的方法

輸入例子1:

輸出例子1:

分析:

類似於**青蛙跳台階。設走到第n步,有f(n)種走法,可以拆分成:第一次走1步,走法為f(n-1);第1次走2步,等等。。。

所以,就有 f(n) = f(n-1) + f(n-2) + ...+ f(1) = f(n-1) *2 = f(2)*2*2 = f(1) * 2**(n-1)

易知 f(1) = 1

n = int(raw_input())

print 2**(n-1)

[程式設計題] 拼湊錢幣

給你六種面額 1、5、10、20、50、100 元的紙幣,假設每種幣值的數量都足夠多,編寫程式求組成n元(n為0~10000的非負整數)的不同組合的個數。 

輸入描述:

輸入包括乙個整數n(1 ≤ n ≤ 10000)

輸出描述:

輸出乙個整數,表示不同的組合方案數

輸入例子1:

輸出例子1:

分析:

問題是要求不同硬幣的組合方案數。假設d[sum]表示金額sum的組合數,那麼可以根據sum是否使用某種硬幣coins[j],分解為

d[sum] = d[sum]+d[sum-coins[j]]

n = int(raw_input())

coins = [1, 5, 10, 20, 50, 100]

d = [0 for i in range(n+1)]

d[0] = 1

for i in range(n+1):

for j in range(len(coins)):

if i>=coins[j]:

d[i] += d[i-coins[j]]

print d[n]

[程式設計題] 最大矩形面積

時間限制:1秒

空間限制:32768k

給定一組非負整數組成的陣列h,代表一組柱狀圖的高度,其中每個柱子的寬度都為1。 在這組柱狀圖中找到能組成的最大矩形的面積(如圖所示)。 入參h為乙個整型陣列,代表每個柱子的高度,返回面積的值。

輸入描述:

輸入包括兩行,第一行包含乙個整數n(1 ≤ n ≤ 10000)

第二行包括n個整數,表示h陣列中的每個值,h_i(1 ≤ h_i ≤ 1,000,000)

輸出描述:

輸出乙個整數,表示最大的矩陣面積。
輸入例子1:2 1 5 6 2 3

輸出例子1:

10
n = int(raw_input())

arr = map(int, raw_input().split())

stack = [-1]

ans = 0

for i in range(n+1):

while arr[i] < arr[stack[-1]]:

h = arr[stack.pop()]

w = i - stack[-1] -1

ans = max(ans, h*w)

arr.pop()

print ans

[程式設計題] 最長公共連續子串

時間限制:1秒

空間限制:32768k

給出兩個字串(可能包含空格),找出其中最長的公共連續子串,輸出其長度。 

輸入描述:

輸入為兩行字串(可能包含空格),長度均小於等於50.
輸出描述:

輸出為乙個整數,表示最長公共連續子串的長度。
輸入例子1:

abcde

abgde

輸出例子1:

2
def find_lcsubstr(s1, s2): 

m=[[0 for i in range(len(s2)+1)] for j in range(len(s1)+1)]

mmax=0   

p=0 

for i in range(len(s1)):

for j in range(len(s2)):

if s1[i]==s2[j]:

m[i+1][j+1]=m[i][j]+1

if m[i+1][j+1]>mmax:

mmax=m[i+1][j+1]

p=i+1

return mmax 

str1 = raw_input()

str2 = raw_input()

if __name__ == '__main__':

print find_lcsubstr(str1, str2)

2018 3美團程式設計題

程式設計題1 給定乙個序列,輸出這個序列子串的和為k的倍數的子串的長度,如果有重複,輸出最大長度。例如 序列為 k 5 那麼子串的和為5的倍數的有,而這時長度最大的是5,所以輸出5。int count 0 for int i 0 i n i if count n i break cout count...

2017美團面試演算法題

9月份去參加美團的面試,遇到乙個挺有意思的題,哈哈哈,現摘錄如下 問題描述 將1到9九個數字填入上圖,每個數字能且僅能使用一次,使得三條邊的四個數字之和相等。解答 將a1到a9排成一排,然後求全排列,如果滿足a1 a2 a3 a4 a4 a5 a6 a7 a1 a7 a8 a9,則為輸出。據此程式設...

2017美團秋招筆試程式設計題 後台研發

1 求所有能被7整除的數字 分析 方法一 採用暴力解法,即兩兩數字都組合一遍對7取餘判斷的方法,演算法複雜度o n2 會超時,提交成功率為70 方法二 求乙個數a前面拼接上什麼數能夠被7整除,只需進行以下操作即可 數a前面依次拼上0 6,變為0a,1a,2a 6a。依次判斷這7個數能否被7整除 以1...