刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

最佳策略

题目描述:

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

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

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

注意:

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

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

输入描述:

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

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

输出描述:

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


样例输入:

3
130 115 98

样例输出:

9

使用微信搜索喵呜刷题,轻松应对考试!

答案:

首先,我们需要对小朋友的身高进行排序,如果身高相同,则保持原有顺序。然后,我们遍历排序后的身高列表,对于每个小朋友,如果他不是当前位置,则交换他和当前位置的小朋友,并给当前位置的小朋友加上对应的不高兴值。最后,我们累加所有小朋友的不高兴值,即为所有小朋友的不高兴值的总和的最小值。

解析:

【喵呜刷题小喵解析】:
这个题目考察的是排序算法和贪心算法的应用。首先,我们需要对小朋友的身高进行排序,如果身高相同,则保持原有顺序。这样可以保证排序后的身高列表是从低到高的顺序,从而减少交换次数。然后,我们遍历排序后的身高列表,对于每个小朋友,如果他不是当前位置,则交换他和当前位置的小朋友,并给当前位置的小朋友加上对应的不高兴值。由于每次交换都会增加两个小朋友的不高兴值,因此我们需要尽可能减少交换次数。最后,我们累加所有小朋友的不高兴值,即为所有小朋友的不高兴值的总和的最小值。

根据题目要求,我们需要注意以下几点:

1. 如果两个小朋友身高相同,则不需要交换,直接保持原有顺序。
2. 每次交换的两个小朋友都需要增加不高兴值,根据交换次数确定不高兴值的大小。
3. 在遍历身高列表时,我们需要判断当前小朋友是否是当前位置,如果不是,则交换位置并增加不高兴值。

通过以上步骤,我们可以得出所有小朋友的不高兴值的总和的最小值。在实际编程中,我们可以使用贪心算法的思想,先对身高进行排序,然后遍历身高列表,进行交换和累加不高兴值。最后输出所有小朋友的不高兴值的总和的最小值即可。
创作类型:
原创

本文链接:最佳策略 题目描述: 有n个小朋友排成一排,现在需要按身高从低到高的顺序进行排列。排序方式为:如果位

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share