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);
        }
    }
    
  • 相关阅读:
    SIGAI深度学习第三集 人工神经网络2
    SIGAI深度学习第二集 人工神经网络1
    SIGAI深度学习第一集 机器学习与数学基础知识
    python第三方库的更新和安装指定版本
    AttributeError: 'int' object has no attribute 'upper'
    洛谷 3916 图的遍历
    【模板】分块
    洛谷 1003 NOIP2011 D1T1 铺地毯
    洛谷 省选营题目 过年
    洛谷 1396 营救 (最短路)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947968.html
Copyright © 2011-2022 走看看