博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT 1067. Sort with Swap(0,*)
阅读量:6691 次
发布时间:2019-06-25

本文共 1730 字,大约阅读时间需要 5 分钟。

 

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 1
Sample Output:
9

 

一开始按照选择排序做了, 结果有两个测试点超时, 看看网上的思路基本上都是判断是否被访问的算法,想了想这个应该是表排序的变形,就按照表排序方式做了,花了一下午调试 果然AC了, 特地来交流 ^_^!

 

1 #include 
2 #include
3 4 typedef int ElementType; 5 6 void Swap(ElementType *a, ElementType *b); 7 void PrintA(ElementType A[], int N); 8 int IsSort( ElementType A[], int m, int N); 9 void SwapZero( ElementType A[], ElementType B[], int N);10 11 typedef struct {12 int index;//0元素所在下标13 int count;//记录交换次数14 }Zero;15 16 Zero zero;17 18 int main(){19 int N, i;20 zero.count = 0;21 //freopen("C:\\in.txt","r", stdin);22 scanf("%d", &N);23 ElementType* A;//这个是原来的数组24 A = (ElementType*)malloc(N*sizeof(ElementType));25 ElementType* B;//这个是表26 B = (ElementType*)malloc(N*sizeof(ElementType));27 for( i=0; i

 

转载于:https://www.cnblogs.com/xuningfans/p/4962038.html

你可能感兴趣的文章
poj2245 Lotto
查看>>
我的友情链接
查看>>
Oracle版本升级
查看>>
sizeof 的使用(标记一下)
查看>>
第 四 十 天:关 于 正 则 的 一 些 小 用 法
查看>>
编程 -- awk
查看>>
2012 #3 Arcane Numbers
查看>>
python 列表模拟堆栰
查看>>
Linux-Centos5.3中文乱码问题解决
查看>>
linux分区学习[ CentOS ]
查看>>
aaa认证
查看>>
adb_安装软件
查看>>
廖雪峰官网学习js 字符串
查看>>
phpcms 如何获取文章
查看>>
C# 如何防止重放攻击(转载)
查看>>
C#匿名类型
查看>>
ActiveMQ
查看>>
Nginx服务器部署 负载均衡 反向代理
查看>>
C++学习笔记:指向函数的指针
查看>>
Child Action
查看>>