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

来源:互联网 发布:mac qq远程桌面 编辑:程序博客网 时间:2024/06/13 15:25

    当0在0位置时,如果其他的还未完全就位需要浪费一次交换机会。

#include <iostream>#include <cstdio>#include <vector>#include <algorithm>using namespace std;int findPos(vector<int>& per, int st){    for(size_t i = st; i < per.size(); ++i){        if(per[i] != i) return i;    }    return 0;}int main(){int n;cin >> n;vector<int> per(n);for(int i = 0; i < n; ++i){scanf("%d", &per[i]);}int sum = 0, pos = findPos(per, 1);while(pos){        if(per[0] == 0){            swap(per[0], per[pos]);            ++sum;        }        while(per[0] != 0){            int tmp = per[0];            per[0] = per[tmp];            per[tmp] = tmp;            ++sum;        }        pos = findPos(per, pos);}cout << sum;return 0;}


0 0
原创粉丝点击