# 實作題 - 交錯字串 - APCS - by Peter Wang ## 題目資訊 此題為2017.10.18測驗中的題目2 ###### tags: `APCS` ## 題目敘述 ![](https://i.imgur.com/COMcKFp.jpg) ### 輸入: 輸入的第一行是k,第二行是輸入字串,字串長度至少為1,只由大小寫英文字母組成(A~Z, a~z)並且沒有空白。 ### 輸出: 輸出輸入字串中滿足 k-交錯字串 的要求的最長一段連續子字串的長度,以換行結尾。 ## 解題思路 這題的解法有很多種,我的方法是用一大堆變數暴力解,之後會更新更好解法。 ## 程式碼 ```clike= #include<iostream> #include<string.h> using namespace std; int main(){ int n; while(cin>>n){ string str; cin>>str; int len=str.length(); int s=0,b=0; int total=0; int total2=0; int x=0; int y=0; int z=0; int a=0; for(int i=0;i<len-n;i++){ for(int j=0;j<n;j++){ if('A'<=str[i+j] && str[i+j]<='Z' && s==0){ b++; } else if('a'<=str[i+j] && str[i+j]<='z' && b==0){ s++; } else{ total=0; s=0; b=0; x=0; y=0; z=1; i=i-(n*a); a=0; break; } } if(b==n && x==0){ total+=n; x=1; y=0; b=0; i+=n-1; a++; } else if(s==n && y==0){ total+=n; y=1; x=0; s=0; i+=n-1; a++; } else{ total=0; b=0; s=0; x=0; y=0; i=i-(n*a); a=0; } if(total>=total2){ total2=total; } } if(len==1){ cout<<1<<endl; } else{ cout<<total2<<endl; } } } ``` ## 資料來源 [zerojudge](https://zerojudge.tw/) [題目敘述](https://zerojudge.tw/ShowProblem?problemid=c462) ## 備註 >[name=PeterWang] >[time=Mon, Jun 14, 2021 12:56 AM]