dp[i]:表示換 i 的錢的方案數量
這裡注意去重,如2,3,5,換5的錢
0 1 2 3 4 5
以2為起始 1 0 1 0 2 0
以3為起始 1 0 1 1 2 1
以5為起始 1 0 1 1 2 2
故換5的錢一共2種方法:即2+3和5
這裡通過這樣的順序限定,使得2,3和3,2不會重複,因為必定是3,2
#include #include using namespace std;
const int mod = 1e9+7;
int getmethods(int n,vector&nums,int aim)
}for(auto n:dp) cout << n << ' ';
cout << endl;
return dp[aim];
}int main()
dp[i][j]:總錢數為 i,使用 j 和 j 前面的錢去組合,最多的種數(紅色部分防重複)
#include #include using namespace std;
const int mod = 1e9+7;
int getmethods(int n,vector&nums,int aim)else}}
return dp[aim][n];
}int main()
換錢的方法數
題目 給定陣列arr,arr中所有的值都為整數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個整數代表要找的錢數,求換錢有多少種方法。舉例 arr 5,10,25,1 aim 0 組成0元的方法有1種,就是所有面值的貨幣都不用。所以返回1。arr 5,10,25,1 ai...
換錢的方法數
1.給定陣列arr,arr中所有的值都為正數且不重複。每個值代表一種面值的貨幣,每種貨幣都可以使用任意張,再給定乙個整數aim代表要找的錢數,求組成aim的最少貨幣數。方法一 暴力遞迴 遞迴部分 a index i就是用幾張a index process a,0,target defprocess ...
換錢的方法數
題目 給定陣列arr,所有元素都為正數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個整數aim代表要找的錢數,求換錢有多少種方法。舉例 arr 5,10,25,1 aim 0 返回1。組成0元的方法有一種,即所有貨幣都不用 arr 3,5 aim 2 返回0。無法組成2...