问题 A: 马克的字符串

时间限制: 1 Sec  内存限制: 256 MB

题目描述

定义一个字符串满足'MK'性质当且仅当它修改其中不超过k个字符后是回文串。给你一个字符串,问它有多少非空子串满足'MK'性质。

输入

输入的第一行包含一个字符串s

输入的第二行包含一个整数k

输出

输出的第一行包含一个整数,为满足'MK'性质的字串数量。

样例输入

Aab
1

样例输出

6

提示

【样例说明】

 

每一个字串都是回文串或修改一个字母后是回文串

 

【数据规模与约定】

 

对于30%的数据:k=0


对于100% 的数据:字符串长度 1<=l<=100,0<=k<=50

题解:n^3暴力,开始跑了个manacher,结果WA了,至今迷

#include<bits/stdc++.h>
using namespace std;
char str[208];
int k; 
bool check(int i, int j){
    int cnt = 0;
    while(i <= j){
        if(str[i]  != str[j])cnt ++;
        if(cnt > k)return 0;
        i++, j--;
    }
    return 1;
}
int main(){
    scanf("%s", str);
    scanf("%d", &k);
    int ans = 0;
    int len = strlen(str); 
    for(int i = 0; i < len; i++)
        for(int j = i; j < len; j++)
            ans += check(i, j); 
    printf("%d",ans);
}
View Code

相关文章: