AC代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
using namespace std;
int judge(char tmp[],char a[]);
int main()
{
int l;
char a[100];
char b[100];
cin>>l;
getchar();
gets(a);
int Max=0;
int len=strlen(a);
for(int i=0;i<=len-l;i++)
{
for(int j=len-1;j-i+1>=l;j--)//子串的长度必须严格大于等于l
{//重点 从最长的开始验证 保证了一定出现最多的count相同时 一定会选择最长的那一串
int x=0;
char tmp[100];
for(int k=i;k<=j;k++)
{
tmp[x++]=a[k];
}
tmp[x]='\0';
int count=judge(tmp,a);
if(count>Max)
{
strcpy(b,tmp);//拷贝字符串;
Max=count;
}
}
}
puts(b);
return 0;
}
int judge(char tmp[],char a[])
{
int count=0;
int len1=strlen(a);
int len2=strlen(tmp);
for(int i=0;i<=len1-len2;i++)
{
/*在母列的每一个元素开始 只要判断len2个元素即可
同时也保证交叉的子列可以判断的到*/
int flag=1;//标志
int n=i;
for(int j=0;j<len2;j++)
{
if(tmp[j]==a[n])
{
n++;
}
else
{
flag=0;
break;
}
}
if(flag==1)
{
count++;
}
}
return count;
}