PAT-A-1067. Sort with Swap(0,*) (25)
来源:互联网 发布:壁虎数据恢复官网 编辑:程序博客网 时间:2024/06/06 03:23
1067. Sort with Swap(0,*) (25)
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 N nonnegative integers.
Input Specification:
Each input file contains one test case, which gives a positive N (<=105) 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 1Sample Output:
9
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int pos[100010];int main(){ int n; int num; int left, ans=0; cin >> n; left = n-1; for (int i = 0; i < n; i++) { cin >> num; pos[num] = i; if (num == i&&i != 0) left--; } int k = 1; while (left>0) { if (pos[0] == 0) { while (k<n) { if (pos[k] != k) { swap(pos[0], pos[k]); ans++; break; } k++; } } while (pos[0] != 0) { swap(pos[0], pos[pos[0]]); ans++; left--; } } cout << ans << endl; system("pause"); return 0;}
- PAT A 1067. Sort with Swap(0,*) (25)
- PAT-A 1067. Sort with Swap(0,*) (25)
- PAT-A-1067. Sort with Swap(0,*) (25)
- pat 1067. Sort with Swap(0,*) (25)
- PAT 1067. Sort with Swap(0,*) (25)
- 【PAT】1067. Sort with Swap(0,*) (25)
- pat-1067. Sort with Swap(0,*) (25)
- 【PAT】1067. Sort with Swap(0,*)
- PAT|1067. Sort with Swap(0,*)
- PAT 1067. Sort with Swap(0,*)
- 【PAT】1067. Sort with Swap(0,*)
- pat 1067 Sort with Swap(0,*) (25)
- PAT 1025Sort with Swap(0,*) (25)
- pat-a1067. Sort with Swap(0,*) (25)
- PAT A1067. Sort with Swap(0,*) (25)
- 【PAT甲级】1067. Sort with Swap(0,*) (25)
- 1067. Sort with Swap(0,*) (25) PAT甲级
- PAT甲级.1067. Sort with Swap(0,*) (25)
- 基于Django的在线MOOC学习系统(1)——Django App 设计
- 聊一聊小甜饼
- 每周一本书之《大数据技术概论》:菜鸟学大数据,如果这些还不会,劝你一定要补上!
- CSS样式继承和层叠
- Caffe学习笔记(六):mnist手写数字识别训练实例
- PAT-A-1067. Sort with Swap(0,*) (25)
- 倒数之和(难度系数:半颗星)
- 实验:C++实验4-百钱百鸡问题
- 排序算法Java——插入排序(希尔排序)
- Adb connection Error:远程主机强迫关闭了一个现有的连接
- 一个有关js函数执行顺序的问题,未解决...
- java 强制类型转换
- 正确对待大学课程
- 线性表_循环链表(增减删查 + 约瑟夫环问题 代码实现 )