#30087: C++記憶體區段錯誤?


e002933 (徐MAN)

學校 : 不指定學校
編號 : 158405
來源 : [111.71.113.217]
最後登入時間 :
2023-11-18 16:56:51

想請問一下以下我寫的程式碼,哪裡有問題

有過b966,

但跑這題,在資測0,1,4三個點卻顯示"記憶體區段錯誤

結果只有40分

請不吝賜教

#include<iostream>
using namespace std;

int main() {
    int n;
    cin>>n;
    int l[n], r[n];
    int max = 0;
    for(int i = 0; i < n; i++) {
        cin>>l[i];
        cin>>r[i];
        if(max < r[i])
            max = r[i];
    }
    bool b[max] = {0};
    for(int i = 0; i < n; i++) {
        for(int j = l[i]; j < r[i]; j++)
            b[j] = 1;
    }
    int num = 0;
    for(int i = 0; i < max; i++)
        if(b[i] == 1)
            num++;
    cout<<num;
    return 0;
}

#30088: Re: C++記憶體區段錯誤?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.12.66.21]
最後登入時間 :
2025-04-20 17:19:22


    bool b[max] = {0};


max最大可能是9999999,你的陣列太大了,會overflow。就算改成動態記憶體或是用vector也會TLE,改用好一點的方法吧

#30092: Re: C++記憶體區段錯誤?


ccpclub (ccpclub)

學校 : 不指定學校
編號 : 181202
來源 : [118.167.93.106]
最後登入時間 :
2024-11-10 17:07:29


    bool b[max] = {0};


max最大可能是9999999,你的陣列太大了,會overflow。就算改成動態記憶體或是用vector也會TLE,改用好一點的方法吧


只能說b966的側資太弱了,沒卡到worst case

#30922: Re: C++記憶體區段錯誤?


fire5386 (becaidorz)

學校 : 國立清華大學
編號 : 115822
來源 : [140.114.89.50]
最後登入時間 :
2025-09-24 12:11:30

 


只能說b966的側資太弱了,沒卡到worst case


r1ckyorz