最近的投简历过程中,有一家公司先发了笔试题目,在写的过程也有了少许收获,现在复盘一遍,加强学习。
一.
小明的女朋友最喜欢在网上买买买了,可是钱包里钞票有限,不能想买啥就买啥。面对琳琅满目的物品,她想买尽可能多的种类,每种只买一件,同时总价格还不能超过预算上限。于是她请小明写程序帮她找出应该买哪些物品,并算出这些物品的总价格。
输入规范:
每个输入包含两行。第一行是预算上限。第二行是用空格分隔的一组数字,代表每种物品的价格。所有数字都为正整数并且不会超过10000。
输出规范:
对每个输入,输出应买物品的总价格。
输入示例1:
100
50 50
输出示例1:
100
输入示例2:
188
50 42 9 15 105 63 14 30
输出示例2:
160
题目分析:
首先要理解题目,首先给一个最大金额(正整数,小于等于1000),然后是输入各种物品价格,然后输出最多能买多少价格的东西,那么首先一个大体思路,先要给各种物品排序,可以冒泡排序,也可以用集成的sort方法,既Collections.sort(),然后再循环物品,判断是否大于最大金额,大于的时候,break,即可。
代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc1 = new Scanner(System.in);
Scanner sc2 = new Scanner(System.in);
String moneyMax = sc1.nextLine();
String money = sc2.nextLine();
List<Integer> list = new ArrayList();
String moneys[] = money.split("\\s+");
for(String m :moneys){
int ms = 0;
if(m!=null)
ms = Integer.parseInt(m);
if(ms>0&&ms<=1000)
list.add(ms);
}
Collections.sort(list);
int moneyMaxs = Integer.parseInt(moneyMax);
int sum =0;
for(Integer x: list){
if(sum+x>moneyMaxs)
break;
else
sum+=x;
}
System.out.println(sum);
}
}
有几个知识点:
1.了解collections.sort()的方法,这是一个比较便捷的排序方法,可以直接使用,当然也可以自写冒泡排序,那为什么要排序呢,首先,题目中有提到要买尽量多的东西,故要从小加上来,故排序。
2." " 和"\\s+ "的区别,第一种只能识别一个空格,后一种可以识别多个空格,这也是区别,其实这里用" "即可。
本文介绍了一种解决购物预算问题的算法,通过排序和遍历物品价格,实现预算内购买尽可能多品种商品的目标。示例代码展示了如何使用Java实现该算法。
1290

被折叠的 条评论
为什么被折叠?



