帮我看下以下程序哪里错了,是hdu2222题,样例数据都过了,但提交老是wrong answer ,我是用KMP算法做的

#include<iostream>usingnamespacestd;charaim[10001][52];intnext[52];//////////////////... #include<iostream>
using namespace std;
char aim[10001][52];
int next[52];
/////////////////////////////////////////////////////////////////
class KeywordsSearch{
private:
char source[100002];
int count;
int strNum;
int sourceLength;
public:
void initial(int num);
void readCase();
void get_next(char aim[]);
void KMP(char aim[]);
void output();
};
void KeywordsSearch::initial(int num){
count=0;
strNum=num;
}
void KeywordsSearch::readCase(){
getchar();
for(int i=0;i<strNum;i++){
gets(aim[i]);
}
gets(source);
sourceLength=strlen(source);
}
void KeywordsSearch::get_next(char aim[]){
int len=strlen(aim);
int i=0;
next[0]=-1;
int j=-1;
while(i<len){
if(j==-1||aim[i]==aim[j]){
i++;j++;
if(aim[i]!=aim[j]) next[i]=j;
else next[i]=next[j];
}else{
j=next[j];
}
}
}
void KeywordsSearch::KMP(char aim[]){
int i=0,j=0;
int len=strlen(aim);
while(i<sourceLength&&j<len){
if(j==-1||source[i]==aim[j]){
i++;j++;
}else{
j=next[j];
}
}
if(j==len){
count++;
}
}
void KeywordsSearch::output(){
printf("%d\n",count);
}
////////////////////////////////////////////////////////////////
int main(){
int n;
int num;
KeywordsSearch x;
while(scanf("%d",&n)){
while(n--){
scanf("%d",&num);
x.initial(num);
x.readCase();
for(int i=0;i<num;i++){
x.get_next(aim[i]);
x.KMP(aim[i]);
}
x.output();
}
}
return 0;
}
展开
 我来答
百度网友ddd5daf76
2012-03-29
知道答主
回答量:38
采纳率:0%
帮助的人:10万
展开全部
DevC++ 调试通过了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fang_gj
2012-03-29
知道答主
回答量:21
采纳率:0%
帮助的人:8.9万
展开全部
不熟悉c++。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式