疯狂序列

疯狂序列

题目:小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大的顺序来进行列队。现在给出n个学生的身高,请计算出这些学生列队的最大可能的疯狂值。小易老师回来一定会气得半死。

输入描述:输入包括两行,第一行一个整数n(1 ≤ n ≤ 50),表示学生的人数
第二行为n个整数h[i](1 ≤ h[i] ≤ 1000),表示每个学生的身高

输出描述:
输出一个整数,表示n个学生列队可以获得的最大的疯狂值。

如样例所示:
当队列排列顺序是: 25-10-40-5-25, 身高差绝对值的总和为15+30+35+20=100。
这是最大的疯狂值了。

前言

想来想去还是买了个ipad,有点肉疼,暑假赚钱还把。

思路

例如:10 40 5 25 13
第一步:首先将数组排序:5 10 13 25 40
第二步:取数组的最大值max和最小值min,计算差值diff=max-min;
第三步:将数组的第二大的数maxIndex和第二小的数minIndex添加进来,此时
diff=nums[maxIndex]-min+diff;
diff=max-nums[minIndex]+diff;
因为是添加进来两个数,因此有两个值。
此时的最大值为倒数第二大的值,最小值为倒数第二小的值
max=nums[maxIndex]
min=nums[minIndex]
第四步: maxIndex–, minIndex++进行循环。
第五步:加入最后一个数,并比较在数组头和尾那个更大

代码

package mianshiti;

import java.util.Arrays;
import java.util.Scanner;
public class Main{
	Scanner scan=new Scanner(System.in);
	while(scan.hasNextInt()){
		int n=scan.nextInt();
		int [] nums=new int [n];
		for( int i=0;i<n;i++){
		nums[i]=scan.nextInt();
		Arrays.sort(nums[n-1]);
		int max=nums[n-1];
		int min=nums[0];
		int diff=max-min;
		int maxIndex=n-2;
		int minIndex=1;
		while(minIndex<maxIndex){
			diff+=max-nums[minIndex];
			diff+=nums[maxIndex]-min;
			max=nums[maxIndex];
			min=nums[minIndex];
			
}
	diff+=Math.max(nums[maxIndex]-min, max-nums[minIndex]);
}
	System.out.println(diff);
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值