问题 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); }