标签:amp htm spec lag main bin bsp perm hit
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.
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.
For each case, simply print in a line the minimum number of swaps need to sort the given permutation.
10
3 5 7 2 6 4 9 0 8 1
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)
标签:amp htm spec lag main bin bsp perm hit
原文地址:https://www.cnblogs.com/zzw1024/p/11306371.html