1. 计算器
输入:5个数字,为1-5星评价数量
输出:平均评价星级(截尾法保留一位小数)
如:
输入:1 1 2 2 2
输出:3.3
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int sumCounts = 0;
double sumStars = 0;
for (int i = 0; i < 5; i++) {
int temp = in.nextInt();
//计算总星级与总评价数量
sumStars += temp*(i+1);
sumCounts += temp;
}
double score = sumStars/sumCounts;
//四舍五入两位小数
DecimalFormat df = new DecimalFormat("#.00");
//截取前三个字符并输出
System.out.print(df.format(score).substring(0, 3));
}
}
2. 使用优惠券
输入:第一个数n为优惠券数量,下面n行输入x y,意为满x减y的优惠券。
输出:最多能买价值多少的外卖 花最少的钱
(每份订单只能使用一个优惠券;1-2的优惠券不返钱,只能买东西;设任何价格都有相应的外卖可买)
如:
输入:3
5 3
10 5
1 2
输出:17 7
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//优惠券数量
int num_cash = in.nextInt();
int sumValue = 0;
int sumPay = 0;
for (int i = 0; i < num_cash; i++) {
//该优惠券能卖价值多少的东西
int value = in.nextInt();
//该优惠券能省多少钱
int free = in.nextInt();
if (free>value){
//如果是类似1-2的优惠券则只加总价值,无开销
//如1-2,用户可一分钱不花,买到两块钱的外卖
sumValue+=free;
}else{
//如果是正常优惠券则正常计算总价值和总支出
sumValue += value;
sumPay += value-free;
}
}
System.out.println(sumValue + " " + sumPay);
}
}
3. 送花
(花店在1,目的地位于2…n-1;绩效使用实际跑路距离/总距离计算;到最后一个点后不必计算回花店的距离;假设骑手一次性取了所有花,不必每送一次就回一次花店;为简化题意,假设所有节点组成一个树,即所给的n个点最多只有n-1条边)
输入:花店及目的地地点数量n,下面输入n行x y z分别为起始点,终点,距离
(1<=n<=300)
输出:实际跑路距离
未能AC…
4. 奖励金
(合并优惠券,{1, 1, 1, ,1 ,1}合并成{1, 2, 2}再变成{1, 3},每合并一次加一个奖励金,求如何最大化奖励金)
输入:n优惠券个数,下面N个数字为奖励金面额
(1<=面额<=100)
输出:最大奖励金
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num_cash = in.nextInt();
LinkedList<Integer> stack = new LinkedList<>();
int ans = 0;
//设置边界值,防止空指针
stack.push(-1);
for (int i = 0; i < num_cash; i++) {
int end = in.nextInt();
int pre = stack.peek();
//如果可以合并则进入循环
while (pre == end) {
end++;
ans++;
stack.poll();
pre = stack.peek();
}
stack.push(end);
}
System.out.println(ans);
}
}
5.最小元素出队次数
要求每次出队的数如果未最小元素则正常出队,否则再次入队。
题目要求输出:假如所有元素按要求出队至队空,出队操作的次数
输入:元素个数n,与现有元素队列顺序
(1<=n<=30000)
输出:出队操作的次数
如输入:5
6 4 2 1 3
输出:12
未能AC…