1328:【例7.7】光荣的梦想

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 4237 通过数: 2559
【题目描述】
Prince对他在这片大陆上维护的秩序感到满意,于是决定启程离开艾泽拉斯。在他动身之前,Prince决定赋予King_Bette最强大的能量以守护世界、保卫这里的平衡与和谐。在那个时代,平衡是个梦想。因为有很多奇异的物种拥有各种不稳定的能量,平衡瞬间即被打破。KB决定求助于你,帮助他完成这个梦想。

一串数列即表示一个世界的状态。

平衡是指这串数列以升序排列。而从一串无序数列到有序数列需要通过交换数列中的元素来实现。KB的能量只能交换相邻两个数字。他想知道他最少需要交换几次就能使数列有序。

【输入】
第一行为数列中数的个数n,第二行为n ≤ 10000个数。表示当前数列的状态。

【输出】
输出一个整数,表示最少需要交换几次能达到平衡状态。

【输入样例】
4
2 1 4 3
【输出样例】
2

PS:此题明明可以用冒泡做出来,参考答案却是归并,不解

#include <iostream>
using namespace std;

int list[10240];

int main()
{
    int n;cin>>n;
    for(int i=0;i<n;i++) cin>>list[i];
    long long cnt=0;
    for(int i=0;i<n;i++)
        for(int j=1;j<n-i;j++)
        {
            if(list[j]<list[j-1])
            {
                int t=list[j];
                list[j]=list[j-1];
                list[j-1]=t;
                cnt++;
            }
        }
    cout<<cnt<<endl; 
}
Last modification:December 27th, 2020 at 11:45 am