编程题

最佳策略

题目描述:

有n个小朋友排成一排,现在需要按身高从低到高的顺序进行排列。排序方式为:如果位置相邻的两个小朋友不符合从低到高的顺序,就交换这两个小朋友的位置。且每个小朋友都有一个不高兴的数值,开始的时候,所有小朋友的不高兴值为0。如果某个小朋友第一次被交换,则他的不高兴值加1,如果第二次被交换,则他的不高兴值加2,如果第三次被交换,则他的不高兴值加3,依此类推。

假如:一个小朋友被交换了3次,他的不高兴值为6(1+2+3)。

如果让所有小朋友都按从低到高的顺序排好队,那么所有小朋友的不高兴值的总和的最小值是多少(也就是交换次数最少,不高兴值得总和最小)。

注意:

1.如果有两个小朋友身高一样,谁在谁前无所谓(不需要交换);

2.每次交换的两个小朋友都需要增加不高兴值。

输入描述:

第一行输入一个正整数n(2<n<51)表示小朋友的数量。

第二行输入n个正整数(每个正整数<160),分别表示n个小朋友的身高,正整数之间以一个空格隔开。

输出描述:

输出所有小朋友的不高兴值的总和的最小值。


样例输入:

3
130 115 98

样例输出:

9
查看答案
赣ICP备20007335号-2