......................應該看得懂註解吧~..
#include int a[ 50001 ] ; int main(){ int N ; while( scanf( "%d" , &N ) != EOF ){ int gup = 0 , j = 0 , x = N ; for( int i = 0 ; i < N ; i++ ) scanf( "%d" , &a[ i ] ) ; while( N > 0 ){ if ( a[ j ] >= 0 && j != a[ j ] ){ //情況一:可繼續找 int tmp = j ; j = a[ j ] ; a[ tmp ] = -1 ; N -- ; } if ( a[ a[ j ] ] == -1 ){ //情況二:找到底 a[ j ] = -1 ; j = 0 ; gup += 1 ; N -- ; } if ( a[ j ] == j ){ //情況三:自己跟自己是好朋友.... a[ j ] = -1 ; j = 0 ; gup += 1 ; N-- ; } if ( a[ j ] == -1 ) j++ ; } printf( "%d\n" , gup ) ; } return 0 ; }
執行結果 : AC 4ms 268kb
解題報告不是讓您來貼答案,
您只需分享解題的方向即可,
讓後面的人也能享受解題的樂趣。
......................應該看得懂註解吧~..
#include int a[ 50001 ] ; int main(){ int N ; while( scanf( "%d" , &N ) != EOF ){ int gup = 0 , j = 0 , x = N ; for( int i = 0 ; i < N ; i++ ) scanf( "%d" , &a[ i ] ) ; while( N > 0 ){ if ( a[ j ] >= 0 && j != a[ j ] ){ //情況一:可繼續找 int tmp = j ; j = a[ j ] ; a[ tmp ] = -1 ; N -- ; } if ( a[ a[ j ] ] == -1 ){ //情況二:找到底 a[ j ] = -1 ; j = 0 ; gup += 1 ; N -- ; } if ( a[ j ] == j ){ //情況三:自己跟自己是好朋友.... a[ j ] = -1 ; j = 0 ; gup += 1 ; N-- ; } if ( a[ j ] == -1 ) j++ ; } printf( "%d\n" , gup ) ; } return 0 ; }
執行結果 : AC 4ms 268kb
解題報告不是讓您來貼答案,
您只需分享解題的方向即可,
讓後面的人也能享受解題的樂趣。
恩 這位大大 我說一下我的想法..我是認為當我看別人的程式碼我可以學到如何思考從什麼方向去解題,尤其是那些初學,我貼出來的原因不是要別人copy而是給有需要的人去理解不同的解題方法,而且有些題目網路上是找不到的,那些初學者無從下手,問高階的高手又不行,因為他們也很忙,程式碼寫錯或概念錯又會被他們冷諷,每個人都不是一開始一學就會,如果有人怎麼都想不出解法,亦或編譯器的問題不知該如何解決,又有誰能隨時伸出援手,我很認真的寫出我的想法,如果題目可以解出那就會在解的瞬間感到解題的快樂,但如果一直解不出就會變成痛苦,尋求幫助也久久沒人回應,我真實體驗過,所以如果我的行為冒犯到你我很抱歉,我也是一路走來的
......................應該看得懂註解吧~..
#include int a[ 50001 ] ; int main(){ int N ; while( scanf( "%d" , &N ) != EOF ){ int gup = 0 , j = 0 , x = N ; for( int i = 0 ; i < N ; i++ ) scanf( "%d" , &a[ i ] ) ; while( N > 0 ){ if ( a[ j ] >= 0 && j != a[ j ] ){ //情況一:可繼續找 int tmp = j ; j = a[ j ] ; a[ tmp ] = -1 ; N -- ; } if ( a[ a[ j ] ] == -1 ){ //情況二:找到底 a[ j ] = -1 ; j = 0 ; gup += 1 ; N -- ; } if ( a[ j ] == j ){ //情況三:自己跟自己是好朋友.... a[ j ] = -1 ; j = 0 ; gup += 1 ; N-- ; } if ( a[ j ] == -1 ) j++ ; } printf( "%d\n" , gup ) ; } return 0 ; }
執行結果 : AC 4ms 268kb
解題報告不是讓您來貼答案,
您只需分享解題的方向即可,
讓後面的人也能享受解題的樂趣。
恩 這位大大 我說一下我的想法..我是認為當我看別人的程式碼我可以學到如何思考從什麼方向去解題,尤其是那些初學,我貼出來的原因不是要別人copy而是給有需要的人去理解不同的解題方法,而且有些題目網路上是找不到的,那些初學者無從下手,問高階的高手又不行,因為他們也很忙,程式碼寫錯或概念錯又會被他們冷諷,每個人都不是一開始一學就會,如果有人怎麼都想不出解法,亦或編譯器的問題不知該如何解決,又有誰能隨時伸出援手,我很認真的寫出我的想法,如果題目可以解出那就會在解的瞬間感到解題的快樂,但如果一直解不出就會變成痛苦,尋求幫助也久久沒人回應,我真實體驗過,所以如果我的行為冒犯到你我很抱歉,我也是一路走來的
您好,其實很簡單,不要設定成"解題報告" 就好囉。討論區不會也無法禁止貼解答。
google 一下也很容易找到,但有時候有答案也不一定看得懂。或者不知道是如何思考的。
解題報告希望能提供的是解題思路,讓更多人能理解為何會這樣解,相信是更有幫助的。
總之,還是感謝您的熱心 :)
我明白了,感謝,以後還是貼在討論區發新評論好了,雖然不知版主是誰,是網路管理員嗎??算了,我的這篇解題報告心血不知被誰給刪了.只是不甘心~~ =.=