#30514: C++,只有20分,先暫不討論tle問題


e002933 (徐MAN)

學校 : 不指定學校
編號 : 158405
來源 : [111.71.113.217]
最後登入時間 :
2023-11-18 16:56:51
a565. 2.p&q的邂逅 -- 101學年度台北市資訊學科能力競賽 | From: [118.150.201.99] | 發表日期 : 2022-05-26 22:24

想請問版友我程式碼

資測1通過

2跟3都與比正確答案少1

請問問題是出在哪裡嗎?

謝謝版友的回答

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

char aa[10000001];

int main() {
    int n;
    cin>>n;
    while(n > 0) {
        vector<char> a;
        cin>>aa;
        a.assign(aa, aa+strlen(aa));
        int t = a.size(), ans = 0;
        for(int i = 0; i < t; i++)
            if(a[i] == 'p') {
                for(int j = i+1; j < t; j++) {
                    if(a[j] == 'q') {
                        ans++;
                        a.erase(a.begin()+i);
                        a.erase(a.begin()+j-1);
                        t-=2;
                        i = 0;
                        break;
                    }
                    if(a[j] == 'p')
                        break;
                }
            }
        cout<<ans<<endl;
        n--;
    }
    return 0;
}

 
#30519: Re: C++,只有20分,先暫不討論tle問題


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a565. 2.p&q的邂逅 -- 101學年度台北市資訊學科能力競賽 | From: [59.115.10.38] | 發表日期 : 2022-05-27 11:38

1.
                        i = 0;
                        break;
2.
                    if(a[j] == 'p')
                        break;


給你一個測資參考:

1
ppqq
  1. i = 0改成i--,因為for迴圈有i++,你的程式i會變成1
  2. 刪掉
 
ZeroJudge Forum