(暴力碾标算)NOIP模拟赛 宗教仪式
题意:
一个模式串,一个文本串,现定义最大失配值为k
求文本中最大失配值<=k的长度为len(模式串)的字串个数
失配值=当前字串中与模式串不同的字符个数
思路:
暴力,加一个跳出剪枝,居然过了??
代码:
#include<iostream> #include<cstdio> #include<cstring> #define rii register int i #define rij register int j using namespace std; char x[1000005],y[1000005]; int next[1000005],cd1,cd2,sl,k,cnt; int main() { freopen("mo.in","r",stdin); freopen("mo.out","w",stdout); scanf("%s%s",x+1,y+1); scanf("%d",&k); cd1=strlen(x+1); cd2=strlen(y+1); int zq=cd2-k; for(rii=1;i<=cd1-cd2+1;i++) { int r=0,w=0; for(rij=1;j<=cd2;j++) { if(x[i+j-1]==y[j]) { r++; } else { w++; } if(w>k) { break; } if(r>zq) { break; } } if(w<=k) { cnt++; } } printf("%d",cnt); return 0; }