陕西师范大学第七届程序设计竞赛网络同步赛 I 排队排队排队(java)

题目描述

    ACM竞赛队内要开运动会啦!!!!

    竞赛队内的一群阳光乐观积极的队员们迅速的在操场上站成了一支队伍准备开始热身运动。但教练看了一眼觉得队伍高高低低很不整齐。

教练想让大家从低到高站好,每次教练可以任选择一个人令他走到队首,教练想知道他要最少要进行几次这样的操作才能把队伍按从低到高排整齐(身高最低的人站在队首)。

输入描述:

第一行输入N(N<=1000)代表一共有N个队员
第二行输入N个数表示初始时的队伍所对应的每个人的身高(100<=身高<=300)(第一个输入的是队首,最后一个输入的是队尾)

输出描述:

输出教练所需要的最小操作步数

示例1

输入

2
183 185

输出

0
示例2

输入

3
173 186 166

输出

1

说明

一次操作将站在队尾身高为166的队员放在队首就形成了166 173 186的从低到高有序队伍

备注:

身高可能出现相同,身高都是整数。

这道题只要将排序后的数组与原数组进行比较就行了。

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int[] a=new int[n];
		int[] b=new int[n];
		for(int i=0;i<n;i++)
		{
			a[i]=sc.nextInt();
			b[i]=a[i];
		}
		Arrays.sort(b);
		int sum=0;
		int j=n-1;
		for(int i=n-1;i>=0;i--)
		{
			if(a[i]==b[j])
			{
				sum++;
				j--;
			}
				
		}
		System.out.println(n-sum);

	}

}

猜你喜欢

转载自blog.csdn.net/hui_1997/article/details/80316254