硬币问题

    xiaoxiao2021-03-25  35

    算法竞赛入门,p262: 自己的实现算法: 思想: 代码:public class CoinQuestion { //改成要解决的问题是硬币的拼凑问题 //采用的思想是树的遍历 private static int[] coin = {1,2,3}; //存储的是硬币的种类 private static int sum = 8; //存储的是需要拼凑的总数 private static int[] track = new int[100]; private static int count = 0; public static void main(String[] args) { dps(6, count); } public static void dps(int sum,int count){ for (int i=0; i<coin.length; i++){ sum = sum - coin[i]; track[count++] = coin[i]; if (sum > 0){ dps(sum, count); }else if (sum == 0){ //直接打印 for (int j=0; j<count; j++){ System.out.print(track[j] +" "); } System.out.println(); } sum = sum + coin[i]; track[--count] = 0; } } } 程序缺点: 运行出来的结果中含有重复的结果,比如说:11112,和21111,都会有,需要对结果去重 书中代码实现:
    转载请注明原文地址: https://ju.6miu.com/read-50357.html

    最新回复(0)