G面经prepare: BuyGoods
给你一部分钱和一些不同价钱的商品,如何在最多买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相关推荐
- G面经prepare: Reorder String to make duplicates not consecutive
字符串重新排列,让里面不能有相同字母在一起.比如aaabbb非法的,要让它变成ababab.给一种即可 Greedy: 跟FB面经Prepare task Schedule II很像,记录每个char ...
- 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 ...
- G面经prepare: Pattern Match
设定一个pattern 把 'internationalization' 变成 'i18n', 比如word是house,pattern可以是h3e, 3se, 5, 1o1s1等, 给pattern ...
- G面经prepare: Straight Partition of A Deck of Cards
Define "Straight" as 5 cards with consecutive numbers. Determine if the deck can be fully ...
- 从安全到镜像流水线,Docker 最佳实践与反模式一览
作者 | Timothy Mugayi 译者 | 弯月,责编 | 夕颜 封图 | CSDN付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 在使用Docker的大部分时间里,我们并不关 ...
- QT+CUDA7.5+UBUNTU14.04
接着前面有篇文章介绍在windows上面对他们进行合成,这篇文章我们介绍下在ubuntu上面对其合成. 程序用的是brown大学里面snow-master,该project包括了几个项目,其中有个CU ...
- 【多项式】CQBZOJ 3773 多项式计算五合一
题意: 分析: 红红火火恍恍惚惚 #include<cstdio> #include<cstring> #include<algorithm> #include&l ...
- [bzoj3711]Druzyny
题目描述 体育课上,n个小朋友排成一行(从1到n编号),老师想把他们分成若干组,每一组都包含编号连续的一段小朋友,每个小朋友属于且仅属于一个组. 第i个小朋友希望它所在的组的人数不多于d[i],不少于 ...
- C++大型项目中使用hpp和h文件代替cpp
文章目录 1.hpp头文件与h头文件的区别: 2.msf中代码分析 2.1利用hpp实现 2.2利用h文件实现 1.hpp头文件与h头文件的区别: (1) hpp,其实质就是将.cpp的实现代码混入. ...
- 文件上传之伪Ajax方式上传
From: <由 Windows Internet Explorer 8 保存> Subject: =?gb2312?B?zsS8/snPtKvWrs6xQWpheLe9yr3Jz7SrI ...
最新文章
- SAP RETAIL 没有分配Assortment的物料,也可以正常下达采购订单
- 【跃迁之路】【658天】程序员高效学习方法论探索系列(实验阶段415-2018.12.02)...
- 2019年 第10届 蓝桥杯 Java B组 省赛真题详解及总结
- STL之bitset
- CSS面试总结(大致)
- OPenCV学习笔记八-图像的滤波
- 从 0 开始手写一个 Spring MVC 框架,向高手进阶
- gin 生成api文档_gin-swagger 生成RESTful风格OpenAPI文档
- PP视频如何设置默认缓存个数
- 证明task线程是来源于线程池的,线程重用
- DEDE内容页调用栏目的SEO标题、描述、关键字的方法
- 内核线程和用户线程(SMP)
- Android的HTTP方式网络通信---HttpURLConnection
- python环境配置(一)——Linux下将python2.6升级到2.7 安装pip 以及升级中遇到问题的解决方法
- gRPC传输协议使用(python教程)
- wojilu系统的ORM代码解析-[源代码结构分析,用特性和反射来感知属性-特性介绍篇]...
- 为什么要编写轻量级的View Controller??
- 【白帽子学习笔记 22】网络扫描与网络侦查
- Basemap库绘制地图
- Grib数据转NC数据