Pat(Advanced Level)Practice--1067(Sort with Swap(0,*))
来源:互联网 发布:单片机封装 编辑:程序博客网 时间:2024/06/07 23:29
Pat1067代码
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<cstdio>#define N 100005using namespace std;int Check(int A[],int begin,int end)//check the position of the data{int i;for(i=begin;i<=end;i++)if(A[i]!=i)return i;return 0;}int main(int argc,char *argv[]){int i,n;int Array[N];int ans=0,temp;int index;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&Array[i]);index=Check(Array,1,n-1);while(index){if(Array[0]==0)//如果0的位置是正确地,则将它与任何一个位置不正确{ //的元素交换,然后将Array[0]指向位置的元素调整正确,Array[0]=Array[index];//在此过程中0可能回到正确位置Array[index]=0;//如此循环即可ans++;}while(Array[0]!=0){temp=Array[0];Array[0]=Array[temp];Array[temp]=temp;ans++;}index=Check(Array,index,n-1);}printf("%d\n",ans);return 0;}
解题思路:
- Pat(Advanced Level)Practice--1067(Sort with Swap(0,*))
- PAT (Advanced Level) Practise 1067 Sort with Swap(0,*) (25)
- PAT (Advanced Level) Practise 1067 Sort with Swap(0,*) (25)
- 【PAT】【Advanced Level】1067. Sort with Swap(0,*) (25)
- PAT (Advanced Level) 1067. Sort with Swap(0,*) (25) 只能与0交换
- 1067. Sort with Swap(0,*) (25)【贪心】——PAT (Advanced Level) Practise
- Pat(Advanced Level)Practice--1098( Insertion or Heap Sort)
- PAT 1067 Sort with Swap(0,*)
- pat 1067 Sort with Swap(0,*) (25)
- Pat(Advanced Level)Practice--1023(Have Fun with Numbers)
- PAT (Advanced Level) Practice 1006
- Pat(Advanced Level)Practice--1025(PAT Ranking)
- Pat(Advanced Level)Practice--1075(PAT Judge)
- 浙大PAT 1067题 1067. Sort with Swap(0,*)
- 【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)
- MySQL索引类型
- 转载-size_t与uint32_t取舍|编程风格
- 报表控件NCreport教程:子查询系统设计
- 接口与抽象类(二)
- PAT 1070. Mooncake
- Pat(Advanced Level)Practice--1067(Sort with Swap(0,*))
- SM会话正常,区域码正确,有流到IPQAM,机顶盒锁频正确。不能点播怎么办
- 过滤器配置
- matlab与vc混合编程问题解决
- Android 用ViewFlipper简单实现广告滚动条
- spring3.0 断网情况下 程序报错Spring如何加载XSD文件(org.xml.sax.SAXParseException: Failed to read schema document错误的
- 黑马程序员 Java基础学习笔记7 类
- 1827 tarjan+缩点
- 马云发内部信: 2014阿里巴巴ALL IN移动电商