#30196: C++原本用array還拿20分,改用vector變5分


e002933 (徐MAN)

學校 : 不指定學校
編號 : 158405
來源 : [111.71.113.217]
最後登入時間 :
2023-11-18 16:56:51
c296. APCS-2016-1029-3定時K彈 -- 2016年10月APCS | From: [118.150.201.99] | 發表日期 : 2022-05-06 11:47

請各位版友不吝指教

昨天我用array還有20分,後面TLE

今天改用vector,程式碼如下

用eclipse測試都正確

卻只有過第一個資測,後面全部區段記憶體錯誤

想請問是因為不能使用指標嗎?

#include<iostream>
using namespace std;
#include<vector>

int main() {
    int n, m, k;
    cin>>n>>m>>k;
    vector<int> b;
    for(int i = 0; i < n; i++)
        b.push_back(i+1);
    int play = 0;
    auto pos = b.begin(), next = b.begin();
    m-=1;
    while(play < k) {
        if(pos+m >= b.end()) {
            b.erase(pos+m-b.size());
            next = pos;
            pos = pos+m-b.size()-1;
        }
        else {
            b.erase(pos+m);
            next = pos;
            pos+=m;
        }
        play++;
    }
    cout<<*next<<endl;
    return 0;
}

 

 
#30208: Re: C++原本用array還拿20分,改用vector變5分


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
c296. APCS-2016-1029-3定時K彈 -- 2016年10月APCS | From: [110.28.192.189] | 發表日期 : 2022-05-06 22:59

            b.erase(pos+m-b.size());
    

 


當m很大你會超出範圍,改用餘數吧

 
ZeroJudge Forum