我是靠谱客的博主 义气香氛,最近开发中收集的这篇文章主要介绍使用Java解牛客网OR115小明卖食物,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述

小明有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小明卖食物所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部