概述
题目描述
小明有n(1≤n≤2000)个美味的食物,他想卖掉它们来赚钱。这些食物放在一些箱子里,它们有些有趣的特性:
(1)这些食物被编号1~n,每一天小明可以从这排箱子的头部或者尾部取出食物去卖;
(2)这些食物放的越久,年龄越大,价值越大,食物i有一个初始的价值V(i);
(3)放了a天后,年龄为a,食物最终价值为V(i)xa。
给定每一个食物的初始价值V(i),请求出小明卖掉它们后可以获得的最大价值,第一天出售的食物年龄为1,此后每增加一天食物的年龄就加1。
输入描述:
第1行:一个整数n;
第i+l行:每行食物i的初始价值V(i)。
输出描述:
1行:小明最终可以获得的最大价值。
思路:
因为每种物品的价格都会随着天数的增加而涨价,所以我们每次卖食物的时候需要先卖出便宜的,把贵的放在后面再卖出去,这样能保证挣到更多的钱
喜欢的老铁们留个赞再走呗
放代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();// 总数
int a[] = new int[n];// 定义一个一维数组并申请空间
for (int i = 0; i < n; i++) {
a[i] = cin.nextInt();// 把每种物品的价格存入到数组中
}
int i = 1;// 天数
int sum = 0;// 卖东西挣到的钱
int left = 0;// 当前位于首位的物品的编号
int right = n - 1;// 当前位于末尾的物品的编号
while (left <= right) {
// 以为物品每过一天就会涨价,所以先卖便宜的,后卖贵的,这样能挣到更多的钱
if (a[left] <= a[right]) {
sum += a[left] * i;
left++;// 更新首位的物品编号
i++;// 天数+1
} else {
sum += a[right] * i;
right--;// 更新末尾物品的编号
i++;// 天数+1;
}
}
System.out.println(sum);
}
}
最后
以上就是义气香氛为你收集整理的使用Java解牛客网OR115小明卖食物的全部内容,希望文章能够帮你解决使用Java解牛客网OR115小明卖食物所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复