#27598: C++參考解答以及詳細解釋


aslanchen0730@gmail.com (陌語)

學校 : 不指定學校
編號 : 164685
來源 : [111.252.124.252]
最後登入時間 :
2024-05-11 21:43:12
c291. APCS 2017-0304-2小群體 -- 2017年3月APCS | From: [111.82.198.171] | 發表日期 : 2021-10-18 14:53

我有將這一題做成Hackmd的筆記,有興趣的人可以進來看看

https://hackmd.io/@yqvHTthmTYehjxz4k9Hqrw/HJQAjjfSt

 

程式碼如下:

 

#include <bits/stdc++.h> using namespace std; const int MAXN = 1e7 + 5; int arr[50000]; int num[MAXN]; signed main(){ ios::sync_with_stdio; // I / O 優化 cin.tie(0); // I / O 優化 int a, b, ans, n; a = 0; ans = 0; cin >> n; for( int i = 0 ; i < n ; i++ ){ cin >> arr[i]; } for( int i = 0 ; i < n ; i++ ){ // 解釋見網頁 if( arr[i] != -1 ){ // 解釋見網頁 for( b = i ; arr[b] != -1 ; ){ // 解釋見網頁 a = b; // 解釋見網頁 b = arr[b]; // 解釋見網頁 arr[a] = -1; // 解釋見網頁 } // 解釋見網頁 ans += 1; // 解釋見網頁 } // 解釋見網頁 } cout << ans << endl; }

 
#27599: Re:C++參考解答以及詳細解釋


aslanchen0730@gmail.com (陌語)

學校 : 不指定學校
編號 : 164685
來源 : [111.252.124.252]
最後登入時間 :
2024-05-11 21:43:12
c291. APCS 2017-0304-2小群體 -- 2017年3月APCS | From: [111.82.198.171] | 發表日期 : 2021-10-18 14:56

我有將這一題做成Hackmd的筆記,有興趣的人可以進來看看

https://hackmd.io/@yqvHTthmTYehjxz4k9Hqrw/HJQAjjfSt

 

程式碼如下:

 

#include <bits/stdc++.h> using namespace std; const int MAXN = 1e7 + 5; int arr[50000]; int num[MAXN]; signed main(){ ios::sync_with_stdio; // I / O 優化 cin.tie(0); // I / O 優化 int a, b, ans, n; a = 0; ans = 0; cin >> n; for( int i = 0 ; i < n ; i++ ){ cin >> arr[i]; } for( int i = 0 ; i < n ; i++ ){ // 解釋見網頁 if( arr[i] != -1 ){ // 解釋見網頁 for( b = i ; arr[b] != -1 ; ){ // 解釋見網頁 a = b; // 解釋見網頁 b = arr[b]; // 解釋見網頁 arr[a] = -1; // 解釋見網頁 } // 解釋見網頁 ans += 1; // 解釋見網頁 } // 解釋見網頁 } cout << ans << endl; }

因為上一篇的程式碼有點跑掉了,所以這裡我重發:

 

P.S. 我有將這一題做成Hackmd的筆記,有興趣的人可以進來看看:

 

https://hackmd.io/@yqvHTthmTYehjxz4k9Hqrw/HJQAjjfSt 

 

#include <bits/stdc++.h>

using namespace std;

 

const int MAXN = 1e7 + 5;

int arr[50000];

int num[MAXN];

 

signed main(){

    ios::sync_with_stdio;    // I / O 優化

    cin.tie(0);    // I / O 優化

    int a, b, ans, n;

    a = 0;

    ans = 0;

    cin >> n;

    for( int i = 0 ; i < n ; i++ ){

        cin >> arr[i];

    }

    for( int i = 0 ; i < n ; i++ ){    // 解釋見網頁

        if( arr[i] != -1 ){    // 解釋見網頁

            for( b = i ; arr[b] != -1 ; ){    // 解釋見網頁

                a = b;    // 解釋見網頁

                b = arr[b];    // 解釋見網頁

                arr[a] = -1;    // 解釋見網頁

            }    // 解釋見網頁

            ans += 1;    // 解釋見網頁

        }    // 解釋見網頁

    }

    cout << ans << endl;

}

 
ZeroJudge Forum