2017滴滴出行面试题 n 张桌子吃饭的最大利润
2016-09-10 11:08
190 查看
描述:
有n张桌子,每张桌子都有固定容量,有m批客人来吃饭,每一批客人都有自己的消费金额,规定客人不可以拼桌子,求老板如何安排才能获得最大利润:
样例输入:
3 5 // 分别代表 n 和 m
2 4 2 // 分别代表每张桌子的容量
// 下面的 m 行的第一个数字表示人数,第二个表示 消费金额
1 3
3 5
3 7
5 9
1 10
样例输出:
20
分析 :分别选 第 1,3, 5 批人可满足题意
思路,用动态规划可解决此类问题
下面我就假设 n =3,m=5来分析
每次来一批人的时候,我们就试着把人安排在三桌的某一桌
1. 当人数大于三张桌子的任何一张的容量是,忽略这一批人,因为坐不下啊。。。。。
2. 把人分别安排在三张桌子,看看那种情况下增加的利润值最大,就选择那一桌。比如说第一批人给的钱没第五批人钱多,很明显要被置换掉。比较完后,记录下是哪一张桌子然后把该桌子拥有的利润值更新
实现代码:
测试结果:
有n张桌子,每张桌子都有固定容量,有m批客人来吃饭,每一批客人都有自己的消费金额,规定客人不可以拼桌子,求老板如何安排才能获得最大利润:
样例输入:
3 5 // 分别代表 n 和 m
2 4 2 // 分别代表每张桌子的容量
// 下面的 m 行的第一个数字表示人数,第二个表示 消费金额
1 3
3 5
3 7
5 9
1 10
样例输出:
20
分析 :分别选 第 1,3, 5 批人可满足题意
思路,用动态规划可解决此类问题
下面我就假设 n =3,m=5来分析
每次来一批人的时候,我们就试着把人安排在三桌的某一桌
1. 当人数大于三张桌子的任何一张的容量是,忽略这一批人,因为坐不下啊。。。。。
2. 把人分别安排在三张桌子,看看那种情况下增加的利润值最大,就选择那一桌。比如说第一批人给的钱没第五批人钱多,很明显要被置换掉。比较完后,记录下是哪一张桌子然后把该桌子拥有的利润值更新
实现代码:
package DIDIS; import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); while (in.hasNextInt()) { int n=in.nextInt(); int m=in.nextInt(); int v[][]=new int[3] ; for (int i = 0; i < n; i++) { v[0][i]=in.nextInt(); } int p[][]=new int[m][2]; for (int i = 0; i < p.length; i++) { p[i][0]=in.nextInt(); p[i][1]=in.nextInt(); } for (int i = 0; i <m; i++) { int increase=0; int maxIndex=-1; for (int j = 0; j <n; j++) { int add=0; if (p[i][0]>v[0][j]) { continue; } if (p[i][1]>v[2][j]) { add=p[i][1]-v[2][j]; } if (add>increase) { increase=add; maxIndex=j; } } if (maxIndex!=-1) { v[2][maxIndex]=p[i][1]; } } int res=0; for (Integer i : v[2]) { res+=i; } System.out.println(res); } } }
测试结果:
相关文章推荐
- 面试题:股票的最大利润
- 携程校招2017编程题之股票最大利润
- 滴滴出行2017秋招笔试编程题(一)——连续最大和、末尾0的个数、进制转换
- [面试]给你一串股票价格,找出买点和卖点,使得利润最大。(Amazon 面试题)
- HAUT 1266 最大子段和(类似DP)(河南工业大学2017校赛)
- 两道2017华为校招Java面试题
- 剑指Offer面试题12:打印1到最大的n位数 Java实现
- 面试题 31: 求子数组的最大和
- 剑指Offer(第二版)面试题17:打印从1到最大的n位数
- 字符串中最大对称子串的长度(C++软件工程师面试题)
- 面试题12:打印1到最大的n位数-大数问题-递归实现多层循环
- 输入小写字母,输出此字母之后的第五个大写字母(软通动力2017校招面试题) 如:输入小写的a,输出F
- 二叉树的最大深度算法面试题-leetcode学习之旅(3)
- 面试题31——连续子数组的最大和
- 2017 ICPC 北京站 H (hihocoder 1634) Puzzle Game (dp 最大子矩阵和)
- 2017Android面试题
- 剑指offer 面试题65 滑动窗口的最大值
- 【二分】【字符串哈希】【二分图最大匹配】【最大流】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem I. Minimum Prefix
- 百度面试题——最大连续数字串问题