PAT (Advanced Level) 1067 Sort with Swap(0, i)

题解

    贪心。

    若 0 的不在它的位置,那么 0 占的那个元素的位置,就和那个元素交换。

    若 0 在它的位置,找一个没有归位的元素与 0 交换。

代码

#include<bits/stdc++.h>
using namespace std;
int arr[100005];
int main()
{
    int i,n,x,cnt=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&x);
        arr[x]=i;
    }
    for(i=1;i<n;i++)
    {
        if(i!=arr[i])
        {
            while(arr[0]!=0)
            {
                swap(arr[0],arr[arr[0]]);
                cnt++;
            }
            if(i!=arr[i])
            {
                swap(arr[0],arr[i]);
                cnt++;
            }
        }
    }
    printf("%d",cnt);
    system("pause");
    return 0;
}

原文地址:https://www.cnblogs.com/VividBinGo/p/12222708.html

时间: 2024-08-30 05:43:51

PAT (Advanced Level) 1067 Sort with Swap(0, i)的相关文章

PAT (Advanced Level) 1067. Sort with Swap(0,*) (25)

只对没有归位的数进行交换. 分两种情况: 如果0在最前面,那么随便拿一个没有归位的数和0交换位置. 如果0不在最前面,那么必然可以归位一个数字,将那个数字归位. 这样模拟一下即可. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<stack> #include<queue> #include

1067. Sort with Swap(0,*) (25)【贪心】——PAT (Advanced Level) Practise

题目信息 1067. Sort with Swap(0,*) (25) 时间限制150 ms 内存限制65536 kB 代码长度限制16000 B 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 exa

PAT 1067. Sort with Swap(0,*) (25)

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 appl

PAT 甲级 1067 Sort with Swap(0, i) (25 分)(贪心,思维题)*

1067 Sort with Swap(0, i) (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 ap

1067 Sort with Swap(0, i) (25 分)

1067 Sort with Swap(0, i) (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 ap

PAT Advanced 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 f

PAT 1067 Sort with Swap(0, i)

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 fol

1067. Sort with Swap(0,*) (25)

时间限制 150 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue 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

PAT 1067 Sort with Swap(0,*)

#include <cstdio> #include <cstdlib> #include <vector> using namespace std; int swap(vector<int> &numpos, int va, int vb) { //printf("swap(%d at %d, %d at %d)\n", va, numpos[va], vb, numpos[vb]); int pa = numpos[va];