移动次数
乍一看题目很复杂,但仔细一读,其实很简单,就是选择排序。每次移动把最大的移到最后的位置上,但有一点不一样,就是移动的次数最后要乘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; }#牛客创作赏金赛#