找人调试下程序

来源:百度知道 编辑:UC知道 时间:2024/06/02 04:13:34
#include <iostream.h>
#include <string>
using namespace std;

int* get_next(char *T);

void main()
{
char *t;
cout<<"请输入一个字符串:";
cin>>t;
int T=strlen(t);
int *next=get_next(t);
int *get_next(char *T)
{
int i=1;
int next[100];
next[1]=0;
int j=0;
while(i<strlen(T))
{
if(j==0||T[i]==T[j])
{i++;j++;next[i]=j;}
else j=next[j];
}//while
return next;
}
总是有错,找人调试,能运行就行
或者找高手帮我重新编个,要求是用C++编一个程序对输入的一个字符串(KMP算法中的子串),计算并输出其next[]数组。注意:数组的下标从1开始。
或者你们提供哪儿能找到高手也行

很急,周日就要
能用的还能加分

回楼下的:那只是编译通过好不?没看见LZ要求吗?

调试通过:
串是什么你自己定义,这只是拿到next值的算法
#include <iostream.h>
#include <string>
using namespace std;

void getnext(char T[],int next[])
{
int i=1,j=0;
next[1]=0;
while(i<T[0])
{
if(j==0||T[i]==T[j])
{i++;j++;next[i]=j;}
else j=next[j];
}
}

void main()
{
int next[100];
char t[100];
cout<<"请输入一个字符串:";
cin>>t;
getnext(t,next);
}

#include <iostream.h> .h去掉
int *get_next(char *T)
定义拿到主函数外
主函数缺 }
t直接定义成字符数组 不然不知道分配多大内存
另外 你程序有子串么?
我想问下楼上的 你指针指的哪块内存?
就算你过了 运行这种东西的机器也快到站了