我用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;
}