UVa 299

  题目大意:给n个数的一个序列,通过交换相邻的两个数使得这n个数按照从小到大的顺序排列。

  Inversion index problem: count how many swaps are needed to make the list sorted. 使用冒泡排序解决。

 1 #include <cstdio>
 2 
 3 int main()
 4 {
 5 #ifdef LOCAL
 6     freopen("in", "r", stdin);
 7 #endif
 8     int T;
 9     scanf("%d", &T);
10     int a[60];
11     while (T--)
12     {
13         int n;
14         scanf("%d", &n);
15         for (int i = 0; i < n; i++)
16             scanf("%d", &a[i]);
17         int swap = 0;
18         for (int i = n; i > 0; i--)
19             for (int j = 0; j+1 < i; j++)
20                 if (a[j] > a[j+1])
21                 {
22                     int t = a[j];
23                     a[j] = a[j+1];
24                     a[j+1] = t;
25                     swap++;
26                 }
27         printf("Optimal train swapping takes %d swaps.
", swap);
28     }
29     return 0;
30 }
View Code
原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3293058.html