[LEETCODE] 76.インタビューの質問08.11。コイン

パッケージ
 dynamicprogramming.medium ; 

/ ** * @Auther:xiaof 
 * @Date:2020/4/23 09:17 * @Description:インタビューの
 質問08.11。コイン
 *コイン。コインの数に制限がない場合、通貨の値は25ポイント、10ポイント、5ポイント、1ポイントです。nポイントを計算するコードを記述する方法はいくつかあります。(結果は大きくなる可能性があります。結果を1000000007に成形する必要があります)
 * 
 *例1:
 *入力:n = 5 
 *出力:2 
 *説明:合計金額を構成する方法は2つあります:
 * 5 = 5 
 * 5 = 1 + 1 + 1 + 1 + 1 
 *例2:
 *入力:n = 10 
 *出力:4 
 *説明:合計金額を構成する方法は4つあります:
 * 10 = 10 
 * 10 = 5 + 5 
 * 10 = 5 + 1 + 1 + 1 + 1 + 1 
 * 10 = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 
 *説明:
 *注:
 *想定できること:
 * 0 <= n(合計金額)<= 1000000 
 * 
 *ソース:LeetCode 
 *リンク:https://leetcode-cn.com/problems/coin-lcci 
 *著作権は控除ネットワークに属しています。商用転載の正式な許可書に連絡し、非商用転載の出典を明記してください。
 * / 
public  class WaysToChange { 

    / ** 
     * 
     *関数の説明:
     *実行時間:46ミリ秒、
     すべてのJavaサブミッションでユーザーの34.42%を打ち負かした*メモリ消費:43.8 MB、すべてのJavaサブミッションでユーザーの100.00%を打ち負かした
     * @author :xiaof 
     * @date:2020/4/23 9:41 
     * @Description:
     * / 
    public  int solution(int n){
         // 動的計画、f(n)= f(n- {1,5、 10,25})+ x、
        int [] res = new  int [n + 1]、money = new  int [] {1,5,10,25 };
        res [ 0] = 0; res [1] = 1 ;
        forint j:money){
             forint i = 2; i <= n; ++ i){
                 if(i> j){ 
                    res [i] =(res [i] + res [i-j]) %1000000007 ; 
                } else  if(i == j){ 
                    res [i] + = 1 ; 
                } 
            } 
        } 

        return res [n]; 
    } 

    public  static  void main(String [] args){
        WaysToChange fuc  =new WaysToChange(); 

        int n1 = 10 ;
        int n2 = 900750 ; 

        fuc.solution(n2); 
    } 
}

リートコードの難易度が中程度のまれな問題です。さあ、オリー

 

おすすめ

転載: www.cnblogs.com/cutter-point/p/12758697.html