每次只能有一组数字进行交换,最后达到逆序效果
我们可以这样理解,我们总是希望每次将一个数摆到正确的位置上,那么这样一个数有
顺时针逆时针两个方向移动的机会,我们总是挑移动次数少的一个方向
那么我们排列前前一半数字,就将其逆时针排,这样次数比较少
而后一半就顺时针排
自己就能得到两个等差数列了
1 #include <cstdio> 2 3 int main() 4 { 5 int n; 6 while(scanf("%d" , &n)!=EOF) 7 { 8 int t = n/2; 9 int ans = t*(t-1)/2; 10 int tt = n-t; 11 ans += tt * (tt-1) / 2; 12 printf("%d\n" , ans); 13 } 14 return 0; 15 }
时间: 2024-12-28 08:50:06