pat--Sort with Swap(0, i)
来源:互联网 发布:微信跳转淘宝 编辑:程序博客网 时间:2024/06/05 16:07
/**********
https://pta.patest.cn/pta/test/1317/exam/4/question/18076
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:
103 5 7 2 6 4 9 0 8 1
Sample Output:
9**********/
#include<iostream>#include<stdio.h>using namespace std;int mark[100005];int main(){ int N,k=0,A[100005]; cin>>N; for(int i=0; i<N; i++) { scanf("%d",&A[i]); if(A[i]==i) k++; } int sum=0; for(int i=0; i<N; i++) { int j=i; if(!mark[i]&&j!=A[j]) { sum=sum+1; while(j!=A[j]&&!mark[j]) { mark[j]=1; j=A[j]; } } } int num=0; if(A[0]==0) { num=(N-k)+sum; } else { num=(N-k)-1+(sum-1); } cout<<num<<endl; return 0;}
<ul><li><span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;"></span></span></li></ul>
- 浙大PAT-Sort with Swap(0, i)
- pat--Sort with Swap(0, i)
- Sort with Swap(0, i)
- Sort with Swap(0, i)
- 【PAT】1067. Sort with Swap(0,*)
- pat 1067. Sort with Swap(0,*) (25)
- PAT 1067 Sort with Swap(0,*)
- PAT 1067. Sort with Swap(0,*) (25)
- 【PAT】1067. Sort with Swap(0,*) (25)
- pat 1067 Sort with Swap(0,*) (25)
- PAT 1025Sort with Swap(0,*) (25)
- PAT|1067. Sort with Swap(0,*)
- pat-1067. Sort with Swap(0,*) (25)
- PAT 1067. Sort with Swap(0,*)
- pat-a1067. Sort with Swap(0,*) (25)
- 【PAT】1067. Sort with Swap(0,*)
- PAT A1067. Sort with Swap(0,*) (25)
- python 实现pat Sort with Swap(0,*)
- SQLite中如何用api操作BLOB类型的字段
- 图片缓存之内存缓存技术LruCache,软引用
- Android Jni 查找错误位置注意事项
- 【9002】局域网
- Generation and Comprehension of Unambiguous Object Descriptions
- pat--Sort with Swap(0, i)
- LintCode(easy)翻转字符串
- ToString()的用法 C# 数学函数库
- iOS编程(双语版) - 视图 - Transform(转换)
- Myeclipse快捷方法
- css3实现百分比宽度减固定宽度展现
- Java反射详解
- CSS 代码语法 代码注释
- RxJava实战演示2,获取网络图片