問題の解決策
貪欲。
それは位置0でない場合には、その要素0の位置を占め、交換にその要素。
その場所にすると0、0 Exchangeとのホーミングを見つけるためにどの要素がありません。
コード
#include <ビット/ STDC ++ H>
使用して 名前空間STDを、
int型 ARR [ 100005 ]。
INT のmain()
{
int型 I、N、X、CNT = 0 。
scanf関数(" %のD "、&N)
以下のために(私は= 0 ; iが<N; I ++ )
{
scanf関数(" %のD "、&x)は、
[x]はARR = iは、
}
のためには、式(I = 1、N iが<; I ++ )
{
場合(I =!ARR [I])
{
一方は(ARR [ 0 ]!= 0 )
{
スワップ(ARR [ 0 ]、[ARR [ARR 0 ]]);
CNT ++ ;
}
場合(I =!ARR [I])
{
スワップ(ARR [ 0 ]、ARR [I])。
CNT ++ ;
}
}
}
のprintf(" %dの" 、CNT)。
システム(「一時停止」)。
リターン 0 ;
}