昨晚臨時做了下美團2023年的校招題(純屬無聊),感覺美團的題就做得很舒服了,考想法,**量小,只要你的idea夠好,**就幾行,學習了!
大富翁遊戲,玩家根據骰子的點數決定走的步數,即骰子點數為1時可以走一步,點數為2時可以走兩步,點數為n時可以走n步。求玩家走到第n步(n<=骰子最大點數且是方法的唯一入參)時,總共有多少種投骰子的方法。
n很小,所以你直接算到6就好了,我一開始就沒多想,直接記憶化搜了下.這個題和走樓梯那個題想法是一樣的.
#include
using
namespace
std;
int dp[7];
int dfs(int n)
int main()
其實這個題有更簡單的方法,就是推通項公式.dp[n]=
dp[n
−1]+
dp[n
−2]+
⋯+dp
[1] ; dp
[n−1
]=dp
[n−2
]+⋯+
dp[1
] ;
兩個等式相減,得到:dp
[n]=
dp[n
−1]∗
2,dp
[1]=
1 ,即dp
[n]=
2n−1
,所以下面的**更好.
#include
using
namespace
std;
int main()
給你六種面額 1、5、10、20、50、100 元的紙幣,假設每種幣值的數量都足夠多,編寫程式求組成n元(n為0~10000的非負整數)的不同組合的個數。
首先我想到的是動態規劃,類似於整數拆分,dp[i][
j]表示,面值為i的錢拿出va
lue[
j]塊錢有多少種方案,那麼為了避免重複,dp
[i][
j]可以由∑j
k=0d
p[i−
valu
e[j]
][k]
轉移過來,初始化的時候dp
[val
ue[i
]][i
]=1 ,最後面值為
n 的方案數為∑6
i=0d
p[n]
[i]。
#include
using
namespace
std;
#define max_n 10001
#define max_z 6
typedef
long
long ll;
int value = ;
int main()}}
for (int i = 1; i < max_n; i++)
for (int j = 0; j < max_z; j++)
sum[i] += dp[i][j];
int n;
while (cin >> n)
cout
<< sum[n] << endl;
return
0;}
仔細想想,這其實是乙個完全揹包問題嘛,先用面值為1的錢去填充,然後再用面值為5的錢去填充,這個時候得到的方案就是面值1和面值5的錢一起去填充的方案數,依次類推就可以了,可以看到完全揹包問題可以轉化為01揹包問題,而且可以優化降維,確實很不錯的解法。
#include
using
namespace
std;
#define max_n 10001
#define max_z 6
typedef
long
long ll;
int value = ;
int main()
給定一組非負整數組成的陣列h,代表一組柱狀圖的高度,其中每個柱子的寬度都為1。 在這組柱狀圖中找到能組成的最大矩形的面積(如圖所示)。 入參h為乙個整型陣列,代表每個柱子的高度,返回面積的值。0;}
給出兩個字串(可能包含空格),找出其中最長的公共連續子串,輸出其長度。還是動態規劃,類似最長公共子串,不過當str[i] != str[j]
時,dp[i][j]=0
,這是因為再往後即使有相同的字母也不是連續的了,要注意是連續的,忘記說了,dp[i][
j]表示字串
str1.substr(0,i),str2.(0,j)
最長連續公共子串的長度,連續子串的結尾分別是i,j
。#include
using
namespace
std;
typedef
long
long ll;
int main()
return
0;}
題解 美團點評2017秋招筆試程式設計題
順序從第四題開始寫到第一題 給出兩個字串 可能包含空格 找出其中最長的公共連續子串,輸出其長度。輸入描述 輸入為兩行字串 可能包含空格 長度均小於等於50.輸出描述 輸出為乙個整數,表示最長公共連續子串的長度。示例1輸入 abcde abgde 輸出 2分析 列舉各種長度的各種情況肯定是要超時的 那...
美團點評2017秋招筆試程式設計題 大富翁遊戲
大富翁遊戲,玩家根據骰子的點數決定走的步數,即骰子點數為1時可以走一步,點數為2時可以走兩步,點數為n時可以走n步。求玩家走到第n步 n 骰子最大點數且是方法的唯一入參 時,總共有多少種投骰子的方法。輸入描述 輸入包括乙個整數n,1 n 6 輸出描述 輸出乙個整數,表示投骰子的方法 輸入例子1 6輸...
2017美團秋招筆試程式設計題 後台研發
1 求所有能被7整除的數字 分析 方法一 採用暴力解法,即兩兩數字都組合一遍對7取餘判斷的方法,演算法複雜度o n2 會超時,提交成功率為70 方法二 求乙個數a前面拼接上什麼數能夠被7整除,只需進行以下操作即可 數a前面依次拼上0 6,變為0a,1a,2a 6a。依次判斷這7個數能否被7整除 以1...