#30594: 為什麼這樣會錯?92趴..


danielhappy16889 (Daniel)

學校 : 臺北市立育成高級中學
編號 : 135795
來源 : [122.100.75.56]
最後登入時間 :
2024-05-05 10:59:14
f072. 3. 家裡的後花園 (Garden) -- 2020年5月TOI練習賽新手組 | From: [180.217.16.30] | 發表日期 : 2022-05-30 20:08

#include <iostream>
using namespace std;
int main()
{
    int n, x, y, z, sum;
    int k[30];
    cin>>n;
    for(int i = 0; i < n; i++){
        cin>>k[i];
    }
    sum = z = 0;
    for(int i = 0; i < n; i++){
        if(k[i] == 1 && z == 0){
            x = i + 1;
            z += 1;
        }
        else if(k[i] == 1){
            y = i - 1;
            for(int j = x; j <= y; j++){
                if(k[j] == 0){
                    sum += 1;
                }
                else if(k[j] == 9){
                    if(k[j - 1] == 0 && (j - 1) >= x){
                        sum -= 1;
                    }
                    if(k[j + 1] == 0 && (j + 1) <= y){
                        sum -= 1;
                    }
                }
            }
            x = i + 1;
        }
    }
    cout<<sum<<endl;
    return 0;
}
一直出現92趴....

 
#30602: Re: 為什麼這樣會錯?92趴..


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.15.1.195]
最後登入時間 :
2024-12-23 09:25:32
f072. 3. 家裡的後花園 (Garden) -- 2020年5月TOI練習賽新手組 | From: [59.115.23.60] | 發表日期 : 2022-05-31 08:30


                else if(k[j] == 9){
                    if(k[j - 1] == 0 && (j - 1) >= x){
                        sum -= 1;
                    }
                    if(k[j + 1] == 0 && (j + 1) <= y){
                        sum -= 1;
                    }
                }


如果測資出現9 0 9,會重複扣兩次

 
ZeroJudge Forum