自己写了一个。但是有点错误。希望大家给我指正一下void lookfor(CString s1,CString s2)
{
int i,j,k,minlen,maxlen,count,percount;
count=0;
percount=0;
CString minstr,maxstr;
char a[100]={0};
int num1=s1.GetLength();
int num2=s2.GetLength();
i=0;j=0;
k=0;
if (num1>num2)
{
minlen=num2;
maxlen=num1;
minstr=s2;
maxstr=s1;
}
else
{
minlen=num1;
maxlen=num2;
minstr=s1;
maxstr=s2;
}
for (i=0;i<minlen;i++)
{
for (j=i+1;j<minlen;j++)
{
int x=0;
for (k=i;k<=j;k++)
{
while(minstr.GetAt(k)!=maxstr.GetAt(x))//终止的现象出现在这一行
{
x++;
if (x>maxlen-1)
break;
}
if (x>maxlen-1)
break;
}
count++;
}
} TRACE("%d\n",count);
}
大家帮我看看。总是出现终止的现象。顺便帮我改进一下这个程序。
{
int i,j,k,minlen,maxlen,count,percount;
count=0;
percount=0;
CString minstr,maxstr;
char a[100]={0};
int num1=s1.GetLength();
int num2=s2.GetLength();
i=0;j=0;
k=0;
if (num1>num2)
{
minlen=num2;
maxlen=num1;
minstr=s2;
maxstr=s1;
}
else
{
minlen=num1;
maxlen=num2;
minstr=s1;
maxstr=s2;
}
for (i=0;i<minlen;i++)
{
for (j=i+1;j<minlen;j++)
{
int x=0;
for (k=i;k<=j;k++)
{
while(minstr.GetAt(k)!=maxstr.GetAt(x))//终止的现象出现在这一行
{
x++;
if (x>maxlen-1)
break;
}
if (x>maxlen-1)
break;
}
count++;
}
} TRACE("%d\n",count);
}
大家帮我看看。总是出现终止的现象。顺便帮我改进一下这个程序。
#include<iostream>
#include<string>
using namespace std;
int findNum(string a,string b);
int main()
{
string a="god";
string b="gog";
int i=findNum(a,b); cout<<i; return 1;
}int findNum(string a,string b)
{
int sum=0;
int alen=a.length();
int blen=b.length(); for(int i=0;i<alen;i++)
{
for(int j=1;j<=alen-i;j++)
{
for(int k=0;k<=blen-j;k++)
{
if(a.substr(i,j)==b.substr(k,j))
sum++;
}
}
} return sum;
}
#include<string>
#include<set>
using namespace std;
set<string> set1;
void findNum(string a,string b,set<string> &setTemp);
int main()
{
string a="good";
string b="goog";
findNum(a,b,set1); set<string>::iterator pos;
for(pos=set1.begin();pos!=set1.end();++pos)
cout<<*pos<<endl; return 1;
}void findNum(string a,string b,set<string> &setTemp)
{
int alen=a.length();
int blen=b.length();
for(int i=0;i<alen;i++)
{
for(int j=1;j<=alen-i;j++)
{
for(int k=0;k<=blen-j;k++)
{
if(a.substr(i,j)==b.substr(k,j))
{
setTemp.insert(a.substr(i,j));
}
}
}
}
}