PAT甲级——A1067 Sort with Swap(0, i)
Posted zzw1024
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT甲级——A1067 Sort with Swap(0, i)相关的知识,希望对你有一定的参考价值。
Given any permutation of the numbers 0, 1, 2,..., N−1, it is easy to sort them in increasing order. But what if Swap(0, *)
is the ONLY operation that is allowed to use? For example, to sort 4, 0, 2, 1, 3 we may apply the swap operations in the following way:
Swap(0, 1) => 4, 1, 2, 0, 3
Swap(0, 3) => 4, 1, 2, 3, 0
Swap(0, 4) => 0, 1, 2, 3, 4
Now you are asked to find the minimum number of swaps need to sort the given permutation of the first Nnonnegative integers.
Input Specification:
Each input file contains one test case, which gives a positive N (≤) followed by a permutation sequence of 0, 1, ..., N−1. All the numbers in a line are separated by a space.
Output Specification:
For each case, simply print in a line the minimum number of swaps need to sort the given permutation.
Sample Input:
10
3 5 7 2 6 4 9 0 8 1
Sample Output:
9
1 #include <iostream> 2 using namespace std; 5 int m = 0, N, nums[100005], flag = 1, index = 1; 6 int main() 7 8 cin >> N; 9 for (int i = 0; i < N; ++i) 10 cin >> nums[i]; 11 12 while (index<N) 13 14 while (nums[0] != 0) 15 16 swap(nums[0], nums[nums[0]]); 17 ++m; 18 19 for (; index < N; ++index)//使用index,不用每次从0开始遍历 20 21 if (index != nums[index]) 22 23 swap(nums[0], nums[index]); 24 ++m; 25 break; 26 27 28 29 cout << m << endl; 30 return 0; 31
以上是关于PAT甲级——A1067 Sort with Swap(0, i)的主要内容,如果未能解决你的问题,请参考以下文章
PAT 甲级 1067 Sort with Swap(0, i) (25 分)(贪心,思维题)*