给你一部分钱和一些不同价钱的商品,如何在最多买K件商品的情况下尽可能多的花掉手里的钱。
举例:口袋里的钱数: 10;   K=2     产品价格: [3, 6, 8, 7, 9]   输出 3, 7

Backtracking:

 1 package BuyGoods;
 2 import java.util.*;
 3
 4 public class Solution {
 5     static int minRemain = 0;
 6
 7     public ArrayList<Integer> optimize(int money, int[] prices, int k) {
 8         ArrayList<Integer> result = new ArrayList<Integer>();
 9         ArrayList<Integer> path = new ArrayList<Integer>();
10         minRemain = money;
11         helper(result, path, money, prices, 0, k);
12         return result;
13     }
14
15     public void helper(ArrayList<Integer> result, ArrayList<Integer> path, int remain, int[] prices, int pos, int times) {
16         if (remain < 0 || times<0) return;
17         if (remain < minRemain) {
18             minRemain = remain;
19             result.clear();
20             result.addAll(path);
21         }
22         for (int i=pos; i<prices.length; i++) {
23             path.add(prices[i]);
24             helper(result, path, remain-prices[i], prices, i+1, times-1);
25             path.remove(path.size()-1);
26         }
27
28     }
29
30     /**
31      * @param args
32      */
33     public static void main(String[] args) {
34         // TODO Auto-generated method stub
35         Solution sol = new Solution();
36         ArrayList<Integer> result = sol.optimize(10, new int[]{7,8,1,6,9}, 3);
37         System.out.println(result);
38     }
39
40 }

G面经prepare: BuyGoods相关推荐

  1. G面经prepare: Reorder String to make duplicates not consecutive

    字符串重新排列,让里面不能有相同字母在一起.比如aaabbb非法的,要让它变成ababab.给一种即可 Greedy: 跟FB面经Prepare task Schedule II很像,记录每个char ...

  2. G面经prepare: Set Intersection Set Difference

    求两个sorted数组的intersection e.g. [1,2,3,4,5],[2,4,6] 结果是[2,4] difference 类似merge, 分小于等于大于三种情况,然后时间O(m+n ...

  3. G面经prepare: Pattern Match

    设定一个pattern 把 'internationalization' 变成 'i18n', 比如word是house,pattern可以是h3e, 3se, 5, 1o1s1等, 给pattern ...

  4. G面经prepare: Straight Partition of A Deck of Cards

    Define "Straight" as 5 cards with consecutive numbers. Determine if the deck can be fully ...

  5. 从安全到镜像流水线,Docker 最佳实践与反模式一览

    作者 | Timothy Mugayi 译者 | 弯月,责编 | 夕颜 封图 | CSDN付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 在使用Docker的大部分时间里,我们并不关 ...

  6. QT+CUDA7.5+UBUNTU14.04

    接着前面有篇文章介绍在windows上面对他们进行合成,这篇文章我们介绍下在ubuntu上面对其合成. 程序用的是brown大学里面snow-master,该project包括了几个项目,其中有个CU ...

  7. 【多项式】CQBZOJ 3773 多项式计算五合一

    题意: 分析: 红红火火恍恍惚惚 #include<cstdio> #include<cstring> #include<algorithm> #include&l ...

  8. [bzoj3711]Druzyny

    题目描述 体育课上,n个小朋友排成一行(从1到n编号),老师想把他们分成若干组,每一组都包含编号连续的一段小朋友,每个小朋友属于且仅属于一个组. 第i个小朋友希望它所在的组的人数不多于d[i],不少于 ...

  9. C++大型项目中使用hpp和h文件代替cpp

    文章目录 1.hpp头文件与h头文件的区别: 2.msf中代码分析 2.1利用hpp实现 2.2利用h文件实现 1.hpp头文件与h头文件的区别: (1) hpp,其实质就是将.cpp的实现代码混入. ...

  10. 文件上传之伪Ajax方式上传

    From: <由 Windows Internet Explorer 8 保存> Subject: =?gb2312?B?zsS8/snPtKvWrs6xQWpheLe9yr3Jz7SrI ...

最新文章

  1. SAP RETAIL 没有分配Assortment的物料,也可以正常下达采购订单
  2. 【跃迁之路】【658天】程序员高效学习方法论探索系列(实验阶段415-2018.12.02)...
  3. 2019年 第10届 蓝桥杯 Java B组 省赛真题详解及总结
  4. STL之bitset
  5. CSS面试总结(大致)
  6. OPenCV学习笔记八-图像的滤波
  7. 从 0 开始手写一个 Spring MVC 框架,向高手进阶
  8. gin 生成api文档_gin-swagger 生成RESTful风格OpenAPI文档
  9. PP视频如何设置默认缓存个数
  10. 证明task线程是来源于线程池的,线程重用
  11. DEDE内容页调用栏目的SEO标题、描述、关键字的方法
  12. 内核线程和用户线程(SMP)
  13. Android的HTTP方式网络通信---HttpURLConnection
  14. python环境配置(一)——Linux下将python2.6升级到2.7 安装pip 以及升级中遇到问题的解决方法
  15. gRPC传输协议使用(python教程)
  16. wojilu系统的ORM代码解析-[源代码结构分析,用特性和反射来感知属性-特性介绍篇]...
  17. 为什么要编写轻量级的View Controller??
  18. 【白帽子学习笔记 22】网络扫描与网络侦查
  19. Basemap库绘制地图
  20. Grib数据转NC数据

热门文章

  1. JS学习之表格的排序
  2. QT正则表达式---针对IP地址
  3. OJ-1:时钟问题【九度1553】
  4. 360杀毒引发的DLL调用异常
  5. yum 安装Mysql8.0
  6. java学习笔记(3.31)
  7. alibaba/Sentinel 分布式 系统流量防卫兵
  8. 更改appstore开发商名字
  9. Android 滑动界面实现---Scroller类别 从源代码和开发文档了解(让你的移动布局)...
  10. mysql常用监控脚本命令列表