| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖
标题:新人请教各位大神。。帮忙看看这个问题(新人发帖,不足之处见谅)
只看楼主 加入收藏
boolen
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
新人请教各位大神。。帮忙看看这个问题(新人发帖,不足之处见谅)
公司发了某商店的购物券1000元,限定只能购买店中的m种商品。
每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。
程序输入:
第一行是一个整数m,代表可购买的商品的种类数。
接下来是m个整数,每个1行,分别代表这m种商品的单价(0<m<1000)。
程序输出:
    第一行是一个整数,表示共有多少种方案
    第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔。
例如:
 
输入:
2
200
300
则应输出:
2
2  2
5  0
搜索更多相关主题的帖子: 购物券 种类 
2014-06-04 19:46
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:7 
你自己先写写,然后把代码贴上来,总不能直接让大家帮你做吧。

我不是砖家,要努力成为砖家。
2014-06-04 23:43
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:7 
没自己的代码、没自己的想法就是很大的不足

三十年河东,三十年河西,莫欺少年穷!
2014-06-05 12:34
boolen
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-4
收藏
得分:0 
只是需要思路。。
2014-06-05 14:09
boolen
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-6-4
收藏
得分:0 
import java.util.Scanner;

public class Demo05 {

    private static int[] shop;

    private final static int total = 1000;
    static int count = 0;

    public static void main(String[] args) {
        input();
        cal(0, 0, "");
        System.out.println(count);
    }
   public static boolean cal(int tt, int index, String numStr) {
        if (tt == total) // 如果计算出的总和正好等于total返回true;
            return true;

        if (index == shop.length) // index超出 shop.length 返回false
            return false;

        int snum = 0; // 当前index数据的数量
        int tmp; // 临时变量

        // 使用tt + 当前index数据乘上数量 , 只有t小于otal时才循环。
        while ((tmp = tt + shop[index] * snum++) <= total) {
            // 保存当前index数据的数量。
            String nStr = numStr + (snum - 1) + " ";

            // 使用新的参数递归调用
            boolean b = cal(tmp, index + 1, nStr);

            if (b) {
                count++;
                System.out.println(nStr);
            }
        }

        return false;
    }

    public static void input() {
        Scanner scan = new Scanner(System.in);
        System.out.println("输入商品个数: ");

        try {
            int num = scan.nextInt();
            shop = new int[num];

            for (int i = 0; i < num; i++) {
                System.out.print("输入" + (i + 1) + "商品价格: ");
                shop[i] = scan.nextInt();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


这个输出的格式不对啊。。。。
2014-06-05 14:49
快速回复:新人请教各位大神。。帮忙看看这个问题(新人发帖,不足之处见谅)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035141 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved