我把k=1還有k!=1的部份分開討論
前五個資測應該是k=1的都過了,我想問題是出在下半段
我的答案總是比資測的答案大
以下是程式碼:
#include<iostream>
using namespace std;
#include<cctype>
#include<cstring>
char a[100000];
int main() {
int k;
cin>>k;
cin>>a;
int ans = 1, total = 0;
if(k == 1) {
if(strlen(a) == 1)
total = 1;
else{
for(int i = 0; i < strlen(a)-1; i++) {
bool isup = isupper(a[i]) ? 1 : 0;
if(isupper(a[i+1]) && !isup)
ans++;
else if(islower(a[i+1]) && isup)
ans++;
else
ans = 1;
if(ans > total)
total = ans;
}
}
}
else {
ans = 0;
bool isup;
for(int i = 0; i < strlen(a)-1; i++) {
if(!ans)
isup = isupper(a[i]) ? 1 : 0;
if(isup) {
int num = 1;
for(int j = i+1; j <= i+k-1; j++) {
if(isupper(a[j])) {
num++;
}
else {
ans = 0;
break;
}
}
if(num == k) {
ans+=k;
i += k-1;
isup = 0;
}
}
else {
int num = 1;
for(int j = i+1; j <= i+k-1; j++) {
if(islower(a[j])) {
num++;
}
else {
ans = 0;
break;
}
}
if(num == k) {
ans+=k;
i += k-1;
isup = 1;
}
}
if(ans > total)
total = ans;
}
}
cout<<total;
return 0;
}
謝謝版友們的回答
我把k=1還有k!=1的部份分開討論
前五個資測應該是k=1的都過了,我想問題是出在下半段
我的答案總是比資測的答案大
以下是程式碼:
#include
using namespace std;
#include
#includechar a[100000];
int main() {
int k;
cin>>k;
cin>>a;
int ans = 1, total = 0;if(k == 1) {
if(strlen(a) == 1)
total = 1;
else{
for(int i = 0; i < strlen(a)-1; i++) {
bool isup = isupper(a[i]) ? 1 : 0;
if(isupper(a[i+1]) && !isup)
ans++;
else if(islower(a[i+1]) && isup)
ans++;
else
ans = 1;
if(ans > total)
total = ans;
}
}
}
else {
ans = 0;
bool isup;
for(int i = 0; i < strlen(a)-1; i++) {
if(!ans)
isup = isupper(a[i]) ? 1 : 0;
if(isup) {
int num = 1;
for(int j = i+1; j <= i+k-1; j++) {
if(isupper(a[j])) {
num++;
}
else {
ans = 0;
break;
}
}
if(num == k) {
ans+=k;
i += k-1;
isup = 0;
}
}
else {
int num = 1;
for(int j = i+1; j <= i+k-1; j++) {
if(islower(a[j])) {
num++;
}
else {
ans = 0;
break;
}
}
if(num == k) {
ans+=k;
i += k-1;
isup = 1;
}
}
if(ans > total)
total = ans;
}
}
cout< return 0;
}
謝謝版友們的回答
有點看不懂你的程式碼,似乎是第k+1個字沒有檢查大小寫。例如測資是
2
AAAa