中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么用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

塘沽区| 绥宁县| 寿阳县| 昔阳县| 东丽区| 谷城县| 大安市| 吉林市| 永定县| 咸阳市| 沽源县| 新化县| 昭通市| 湾仔区| 南投市| 襄垣县| 高淳县| 肇源县| 沭阳县| 上犹县| 余姚市| 定兴县| 寿阳县| 剑川县| 洪湖市| 滁州市| 望都县| 郴州市| 家居| 慈利县| 南昌县| 图们市| 南涧| 抚远县| 武穴市| 沁源县| 濉溪县| 阿勒泰市| 三门县| 高州市| 五华县|