zoukankan      html  css  js  c++  java
  • java实现购物券消费方案

    公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。

    程序输入:
    第一行是一个整数m,代表可购买的商品的种类数。
    接下来是m个整数,每个1行,分别代表这m种商品的单价(0<m<1000)。
    程序输出:
    第一行是一个整数,表示共有多少种方案
    第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔。
    例如:

    输入:
    2
    200
    300
    则应输出:
    2
    2 2
    5 0

    输入:
    2
    500
    800
    则应输出:
    1
    2 0

    输入:
    1
    999
    则应输出:
    0

    多个方案间的顺序不重要。

    package com.liu.ex3;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    
    public class Main {
        public static ArrayList<Integer> list = new ArrayList<Integer>();
        public static int[][] value;
        public static int m;
        public static int count = 0;
        public static String result = "";
        
        public void dfs(int sum, int step) {
            if(step == m) {
                if(sum == 1000) {
                    for(int i = 0;i < list.size();i++) {
                        result += list.get(i)+" ";
                    }
                    result += "
    ";
                    count++;
                }
                return;
            } else {
                for(int i = 0;i <= value[step][1];i++) {
                    sum += value[step][0] * i;
                    list.add(i);
                    dfs(sum, step + 1);
                    sum -= value[step][0] * i;
                    list.remove(list.size() - 1);
                }
            }
        }
        
        public static void main(String[] args) {
            Main test = new Main();
            Scanner in = new Scanner(System.in);
            m = in.nextInt();
            value = new int[m][2];
            for(int i = 0;i < m;i++) {
                int a = in.nextInt();
                int num = 1000 / a;
                value[i][0] = a;
                value[i][1] = num;
            }
            test.dfs(0, 0);
            if(count == 0)
                System.out.println("0");
            else
                System.out.println(count+"
    "+result);
        }
    }
    
  • 相关阅读:
    漫谈架构读书笔记
    软件架构怎样进行架构
    大型网站技术架构阅读笔记6
    beta里程碑总结
    团队总结
    用户体验
    小强大扫荡
    团队测试计划
    团队第二次冲刺第十天
    团队第二次冲刺第九天
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077858.html
Copyright © 2011-2022 走看看