题意:容易理解...
分析:这是一道比较简单的ac自动机+dp的题了,直接上代码。
代码实现:
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<iostream> #include<queue> using namespace std; struct node{ int next[4]; int fail; int flag; void init() { memset(next,0,sizeof(next)); fail=0; flag=0; } }a[1005]; char keyword[25]; char S[1005]; int tot,len; int dp[1005][1005]; int Min(int a,int b) { return a<b?a:b; } void chushihua() { int i,j; tot=0; a[0].init(); for(i=0;i<1005;i++) for(j=0;j<1005;j++) dp[i][j]=1000000; dp[0][0]=0; } int hash(char x) { if(x=='A') return 0; else if(x=='C') return 1; else if(x=='G') return 2; else return 3; } void insert(char *str) { int index,p=0; for(;*str!='