91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Java實現貨幣組合

發布時間:2021-11-16 14:34:47 來源:億速云 閱讀:158 作者:iii 欄目:大數據

本篇內容主要講解“怎么用Java實現貨幣組合”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用Java實現貨幣組合”吧!

給你六種面額 1、5、10、20、50、100 元的紙幣,假設每種幣值的數量都足夠多,編寫程序求組成N元(N為0~10000的非負整數)的不同組合的個數。 先分析

1: 假定100和50兩種幣的和為num, num = 0,50,100,150,... ,  50* (N/50)  

      組合數為 z1  (100x +50y = num 的非負整數解的個數)

2: 20有k張,  k=0,1,2,3,.... , (N-num) / 20

3:   那么1,5,10 這幾種幣的和為 v1andv5andv10 = N- num - 20 * k;   

組合數為z2  (10x+5y <= v1andv5andV10的非負整數解的個數) 

y<= v1andv5andv10/5-2x   設  m = v1andv5andv10/5;

y<=m;   x=0 ;

y<=m-2 ;   x=1 ;

y<=m-4; x=2 ;

其實質上就是一個等差數列求和

4:   每趟循環的組合數為 z1 * z2 , 然后求和即為最終的結果。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println(getTotal(scanner.nextInt()));
    }


    private static long getTotal(int money) {

        long total = 0L;

        for (int num = 0; num <= money; num += 50) {

            // 求解 100x + 50y = num  非負整數解的個數  =>   y = num/50 - 2x (x=0,1,2,3...,num/50/2) 
            int z1 = (num / 50) / 2 + 1;

            int v20 = (money - num) / 20;

            for (int k = 0; k <= v20; k++) {

                // 求解 10x + 5y <= v1andv5andV10  非負整數解的個數
                int v1andv5andV10 = money - num - 20 * k;

                int tmp = (v1andv5andV10 / 5);
                int kkkk = tmp / 2 + 1;
                int z2 = (tmp + 1) * kkkk - kkkk * (kkkk - 1);

                total = total + (long) (z1) * (long) z2;
            }

        }

        return total;

    }
}

不用質疑,這是個正確的答案,也是比較容易理解的答案。 內存消耗也應該是最優的,因為沒有使用數組,只是使用了幾個變量。運行速度也應該還可以, (money/50) * (money/20)/2  次循環運算,100萬內的輸入應該都是秒出結果。

到此,相信大家對“怎么用Java實現貨幣組合”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

屏山县| 平塘县| 游戏| 习水县| 华亭县| 准格尔旗| 华坪县| 宜宾市| 揭东县| 荆门市| 六安市| 郴州市| 朝阳市| 宜都市| 怀柔区| 四会市| 绍兴县| 宕昌县| 教育| 永清县| 望奎县| 宜都市| 巫溪县| 汽车| 洛宁县| 潼关县| 大同市| 连城县| 沂南县| 海宁市| 泗洪县| 稷山县| 上虞市| 新竹市| 江城| 阿瓦提县| 衡南县| 万荣县| 信宜市| 蒲江县| 峨边|