移动次数
乍一看题目很复杂,但仔细一读,其实很简单,就是选择排序。每次移动把最大的移到最后的位置上,但有一点不一样,就是移动的次数最后要乘2,这样才是总共移动的次数,最后计算的时候保留一位小数即可。
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
float sum = 0;
for(int i = 0;i<n;i++){
cin>>a[i];
}
for(int i = 0;i<n;i++){
for(int j = 1;j<n;j++)
if(a[j]<a[j-1]){
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
sum++;}
}
printf("%.1f",sum*2.0/n);
return 0;
}
#牛客创作赏金赛#