【问题标题】:Java program for Money change找钱的Java程序
【发布时间】:2013-11-29 09:30:02
【问题描述】:

我想要一个java程序来换钱,

示例:如果我输入 98 卢比,那么我需要如下结果,

1(Rs. 50) - Rs. 50
2(Rs. 20) - Rs. 40
1(Rs. 5) - Rs. 5
1(Rs. 2) - Rs. 2
1(Rs.1) - Rs. 1

我已经尝试了使用 switch 案例和许多 if 和 else 的逻辑,但我无法实现我想要的。请给出一些想法/逻辑来启动这个..

我尝试的程序是,

package in.javadomain;

import java.util.ArrayList;
import java.util.ListIterator;

public class PowerOfTwo {

    public static void main(String[] args) {
        int input = 98;
        int[] money = { 1, 2, 5, 10, 20, 50, 100, 500, 1000 };
        ArrayList<Integer> moneyChange = new ArrayList<Integer>();
        for (int i = 0; i<money.length; i++) {
            if (input > money[i]) {
                //input = money[i];
                moneyChange.add(money[i]);
                //System.out.println(input);
            }
        }
        ListIterator li = moneyChange.listIterator(moneyChange.size());
        int changes = 0;
        while(li.hasPrevious()){
            int temp = (int) li.previous();
            if(temp<input){
                // System.out.println(temp);
                changes = changes+temp;
                System.out.println(changes);
            }
        }
    }
}

输出是,

50
70
80
85
87
88

但我想要如下的顺序,

50
70
90
95
97
98

请尝试帮助我实现...

【问题讨论】:

  • 发布您的代码,展示您尝试过的内容以及遇到的问题。

标签: java


【解决方案1】:

从最大的硬币开始分割,然后继续剩下的。

98 / 50 = 1 -> 休息 48

48 / 20 = 2 -> 休息 8

8 / 5 = 1 -> 休息 3

3 / 2 = 1 -> 休息 1

1 / 1 = 1

完成

【讨论】:

  • 这只是给你的一个提示,因为你说你不知道从哪里开始
  • @Naveen 您没有指定 120 或 565...您指定了 98...您甚至不应该得到帮助。
  • 你也可以按照我解释的方式用 565 来做
  • @Naveen 在您的 cmets 之后,没有人愿意提供解决方案,因为您对其他专业人士缺乏尊重,甚至发布了不完整的问题并且没有努力解决它。
  • @Naveen 好的。使用动态编程算法,该算法将根据存储在数组中的货币确定计算特定金额的变化。该算法将在数量为 1、2、3... 到 &lt;amount&gt; 时开始检索结果,但由于它是动态规划的,它应该使用最新问题的解决方案来获得当前问题的解决方案。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 2020-09-19
  • 2022-10-01
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
相关资源
最近更新 更多