首页 > 试题广场 >

小明卖食物

[编程题]小明卖食物
  • 热度指数:1328 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

小明有n(1n≤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行:小明最终可以获得的最大价值。
示例1

输入

5
1
3
1
5
2

输出

43

说明

小明出售这些食物(初始价值1,3,1,5,2)的顺序为:第一天卖掉1个,第二天卖掉5个,第三天卖掉2个,第四天卖掉3个,第五天卖掉4个,获得最大的价值1x1+2x3+3x3+4x1+5x5=43。
头像 bandiaoz
发表于 2024-12-21 15:06:59
解题思路 这是一个贪心算法问题: 每次从数组的左端或右端取出一个数 第 次取出的数会乘以 作为得分 取数的规则: 如果左端数小于右端数,取左端数 如果左端数大于右端数,取右端数 如果相等,继续比较下一对数 代码 cpp java python #include < 展开全文
头像 刷代码的长颈鹿
发表于 2025-02-20 22:45:22
#include<iostream> using namespace std; int main() { int sum = 0; int n; cin >> n; int V[n]; for (int i = 0; i < n 展开全文