#25198: c++ 想請問為什麼NA??


morris20031031@gmail.com (damn91)

學校 : 國立臺中第一高級中學
編號 : 147796
來源 : [36.238.200.28]
最後登入時間 :
2024-06-18 17:55:38

  • #include <iostream>
  • using namespace std;

 

 

int main() {

    int n,r,l,ans=0;

    cin >> n;

    int a[n];

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

        cin >> a[i];

        if(a[i] == 0) {

            a[i] = 2;

        }

    }

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

        if(a[i] == 1) {

            l = i;

            break;

        }

    }

    for(int i=n; i>0; i--) {

        if(a[i] == 1) {

            r = i;

            break;

        }

    }

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

        a[i] = 0;

    }

    for(int i=n; i>r; i--) {

        a[i] = 0;

    }

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

        if(a[i] == 9){

            a[i-1] = 0;

            a[i+1] = 0;

        }

    }

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

        if(a[i] == 2){

            ans++;

        }

    }

    cout << ans;

    cout << endl;

    return 0;

}

#25986: Re:c++ 想請問為什麼NA??


vic20050418@gmail.com (Wen Vic)

學校 : 國立臺灣科技大學
編號 : 153262
來源 : [114.136.159.95]
最後登入時間 :
2023-07-29 13:10:41

第一個迴圈 不用把0變成2...別幹傻事

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

        cin >> a[i];

        if(a[i] == 0) {

            a[i] = 2;

        }

    }

你後面兩個for不就在search left and right

後面for直接從left做到right就好啊 還可以少跑迴圈

所以有兩個for根本就可以刪掉了

再來錯誤的地方是出在

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

        if(a[i] == 9){

            a[i-1] = 0;

            a[i+1] = 0;

        }

    }

假如 1 0 9 9 0 1

你判斷到第一個9 會把第二個9吃掉 第二個9旁邊的0還會存在

所以就錯了...