換錢的方法數

2021-08-13 16:32:40 字數 1206 閱讀 9364

【題目】

給定陣列arr,所有元素都為正數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個整數aim代表要找的錢數,求換錢有多少種方法。

【舉例】

arr=[5,10,25,1] aim=0

返回1。組成0元的方法有一種,即所有貨幣都不用

arr=[3,5] aim=2

返回0。無法組成2.

arr=[5,10,25,1] aim=15

返回6。3*5,5+10,10*1+5,15*1,2*5+5*1,10+5*1

【**】

public

static

void

main(string args) ,15));//6

system.out.println(coins1(new

int,2));//0

system.out.println(coins2(new

int,15));//6

system.out.println(coins2(new

int,2));//0

}//換錢的方法數

public

static

intcoins1(int arr,int aim)

return process1(arr,0,aim);

}private

static

intprocess1(int arr, int index, int aim)

else

}return res;

}//方法二:動態規劃,非最優,時間複雜度為o(n×aim)

public

static

intcoins2(int arr,int aim)

int dp=new

int[arr.length][aim+1];

//dp[i][j]表示使用arr[0...i]組成j的方法數

for(int i=0;i0]=1;//矩陣第一列,組成0的方法:1種

}for(int j=0;arr[0]*j<=aim;j++)

//求一般位置的dp[i][j],由兩者疊加

for(int i=1;ifor(int j=1;j<=aim;j++)

}return dp[arr.length-1][aim];//arr[0...n]組成aim的方法數

}

換錢的方法數

題目 給定陣列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,設陣列長度為n,arr中所有的值都為正整數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個整數aim,代表要找的錢數,求換錢的方法數有多少種。由於方法的種數比較大,所以要求輸出對10 9 7進行取模後的答案。輸出包括兩行,第一行包括兩個整數n 0 n 10...