#40789: 有第7筆和第19筆的資料嗎?


123123 (unknown1)

學校 : 不指定學校
編號 : 45211
來源 : [101.9.99.253]
最後登入時間 :
2024-10-09 12:24:18
c462. apcs 交錯字串 (Alternating Strings) -- apcs | From: [101.10.92.152] | 發表日期 : 2024-06-13 09:49

我用C++硬解的方式去把這題解出來,但在第7筆和第19筆資料當中我的解答和正確解答都相差2,我不知道哪裡出了問題想說跟各位大大要一下這兩筆的測資。

程式碼如下,如果可以直接給我更改程式碼的建議就更好了,感謝。

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

int main()
{
    int n,tn1,tn2,r,d=0,t=0;
    string b;
    cin>>n>>b;
    vector<int> sum(b.length(), 0);
    vector<char> a;
    for(int i=0;i<b.length();i+=1){
        a.push_back(b[i]);
    }
    if(a[0]>='a' && a[0]<='z'){
        r=0;
        tn1=n;
        tn2=-1;
    }
    else if(a[0]>='A' && a[0]<='Z'){
        r=1;
        tn2=n;
        tn1=-1;
    }
    if(n>1)
    for(int i=0;i<b.length();i++){
        if(r==0){
            if(a[i]>='a' && a[i]<='z'){
                t++;
            }
            else{
                if(t>n && t%n!=0){
                    t=t-n;
                }
                else{
                    t=0;
                }
                break;
            }
        }
        else if(r==1){
            if(a[i]>='A' && a[i]<='Z'){
                t++;
            }
            else{
                if(t>n && t%n!=0){
                    t=t-n;
                }
                else{
                    t=0;
                }
                break;
            }
        }
    }
    for(int i=t;i<b.length();i++){
        if(r==0){
            while(tn1>0 && i < b.length()){
                if(a[i]>='a' && a[i]<='z'){
                    tn1-=1;
                }
                else if(a[i]>='A' && a[i]<='Z'){
                    r=1;
                    break;
                }
                i+=1;
            }
        }
        else if(r==1){
            while(tn2>0 && i < b.length()){
                if(a[i]>='a' && a[i]<='z'){
                    r=0;
                    break;
                }
                else if(a[i]>='A' && a[i]<='Z'){
                    tn2-=1;
                }
                i+=1;
            }
        }
        if(tn1>0){
            tn2=n;
            tn1=-2;
            i-=1;
            d+=1;
        }
        else if(tn1==0){
            tn2=n;
            tn1=-2;
            sum[d]+=n;
            r=1;
            i-=1;
        }
        else if(tn2>0){
            tn1=n;
            tn2=-2;
            i-=1;
            d+=1;
        }
        else if(tn2==0){
            tn1=n;
            tn2=-2;
            sum[d]+=n;
            r=0;
            i-=1;
        }
    }
    int m=sum[0];
    for(int i=0;i<=d;i++){
        if(sum[i]>m){
            m=sum[i];
        }
    }
    cout<<m;
    return 0;
}

 
ZeroJudge Forum