1、求一个序列中的的连续子序列
需求:输出其连续子序列及其起止位置,并且找出长度最长的那个子序列,输出该序列和它的长度。
代码如下:
#include<iostream>
using namespace std;
#define N 10
int main()
{
int a[N],i,j,k,e,m,n,q;
e=1,n=1;
printf("请输入N个数:");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
if(i==4)
printf("\n");
}\\进行输入操作
k=a[1]-a[0];\\获取初始值
for(i=1;i<N;i++)
{
j=a[i+1]-a[i];\\获取后续元素之差
if(j==k)
e++;\\如果两者相等,计数变量e进行自增操作
else
{
for(m=i-e;m<i+1;m++)
{
if(e==1)\\e的值为1说明不是一个序列,跳出循环不进行输出操作
break;
printf("%d",a[m]);
}
if(n<e){ \\保证获取的e值为所有e存在过的值得最大值
n=e;
q=i;
}
if(e!=1)
printf("起%d止%d\n",i-e,i);
k=a[i+1]-a[i];
e=1;\\初始化变量进行后续操作
}
}
printf("最长子数列为:");
for(i=q-n;i<q+