珠海營銷型網(wǎng)站建設(shè)公司長沙網(wǎng)站優(yōu)化推廣方案
交換瓶子
貢獻(xiàn)者:programmer_ada
有N個(gè)瓶子,編號 1 ~ N,放在架子上。
比如有5個(gè)瓶子:
2 1 3 5 4
要求每次拿起2個(gè)瓶子,交換它們的位置。
經(jīng)過若干次后,使得瓶子的序號為:
1 2 3 4 5
對于這么簡單的情況,顯然,至少需要交換2次就可以復(fù)位。
如果瓶子更多呢?你可以通過編程來解決。
輸入格式為兩行:
第一行: 一個(gè)正整數(shù)N(N<10000), 表示瓶子的數(shù)目
第二行:N個(gè)正整數(shù),用空格分開,表示瓶子目前的排列情況。
輸出數(shù)據(jù)為一行一個(gè)正整數(shù),表示至少交換多少次,才能完成排序。
例如,輸入:
5 3 1 2 5 4
程序應(yīng)該輸出:
3
再例如,輸入:
5 5 4 3 2 1
程序應(yīng)該輸出:
2
#include <bits/stdc++.h>
using namespace std;int main()
{int a[10005],num,ans;cin>>num;for(int i=1;i<=num;i++){cin>>a[i];}for(int i=1;i<=num;i++){while(a[i]!=i){swap(a[i],a[a[i]]);ans++;}}cout<<ans;
}