題目描述:
/**
給你六種面額 1、5、10、20、50、100 元的紙幣,假設每種幣值的數量都足夠多,
編寫程式求組成n元(n為0~10000的非負整數)的不同組合的個數。
輸入描述:
輸入包括乙個整數n(1 ≤ n ≤ 10000)
輸出描述:
輸出乙個整數,表示不同的組合方案數
輸入例子1:
1輸出例子1:
1*/
思路如下:
dp[m][n]表示用前m中紙幣可以組合出n元的組合個數
dp[m][n]=dp[m-1][n]+dp[m][n-values[m]]
values[m]表示第m種紙幣的面值
base case:
dp[m][0]=1
1<=m<=max_m
1<=n<=max_n
可以採用滾動陣列節省空間
下面採用滾動陣列實現
**如下:
#include#include#define max_m 6
#define max_n 10005
typedef long long ll;
using namespace std;
bool flag=false;
int values[max_m+1]=;
ll dp[2][max_n];
int main()
//printf("\n");
flag=!flag;
}printf("%lld", dp[flag][n]);
return 0;
}
筆試刷題 美團
題目描述 大富翁遊戲,玩家根據骰子的點數決定走的步數,即骰子點數為1時可以走一步,點數為2時可以走兩步,點數為n時可以走n步。求玩家走到第n步 n 骰子最大點數且是方法的唯一入參 時,總共有多少種投骰子的方法。輸入描述 輸入包括乙個整數n,1 n 6 輸出描述 輸出乙個整數,表示投骰子的方法 輸入例...
筆試刷題 美團
題目描述 給出兩個字串 可能包含空格 找出其中最長的公共連續子串,輸出其長度。輸入描述 輸入為兩行字串 可能包含空格 長度均小於等於50.輸出描述 輸出為乙個整數,表示最長公共連續子串的長度。輸入例子1 abcde abgde 輸出例子1 2 思路如下 dp i j 表示str1以i結尾和str2以...
美團筆試真題
下面哪種stl容器的實現和其它三個不一樣 a.set b.deque c.multimap d.map 答案 b 序列式容器 vector,list,deque 介面卡容器 stack,queue,優先佇列priority queue 關聯式容器 set,multiset,map,multimap,...