B - Brainman (POJ - 1804)
- 题目大意
给出一串数字,问能是它为顺序排列的最小交换数字方式。
- 解答思路
利用归并排序来求逆序数(注意数组的大小就行了)。
- 代码
#include<iostream> using namespace std; int num[100000]; int main() { int n,m; cin >> n; for (int i = 1; i <= n; i++) { cin >> m; for (int j = 1; j <= m; j++) cin >> num[j]; int sum = 0; for (int i = 1; i < m; i++) for (int k = i + 1; k <= m; k++) if (num[i] > num[k]) sum++; cout << "Scenario " << "#"<<i<<":" << endl<<sum<<endl<<endl; } return 0; }