检查升序数组中有多少个序列的函数的算法是什么.并检测 C 中最长的序列

  • 本文关键字:是什么 算法 函数 多少 数组 升序 arrays
  • 更新时间 :
  • 英文 :


我对这个作业有问题:

写一个 100 个正数的数组,直到出现负数;然后检查数组按升序排列的序列数个,然后写入数组中第一个最长的序列,这意味着如果我有 2 个升序序列有 4 个数字,我将写入前 4 个数字出现

例如:数组: 12, 3, 4 , 23, 5 , 46, 5, 6 , 7, 78 , 67 , 68 , 134 , 45 , 46 , 47 , 67 , 11 , 23 , 18 , -3
系列数:4

最长系列:5 6 7

我的工作 ;

   #define _CRT_SECURE_NO_WARNINGS
   #include <stdio.h>
   #define size 100

    void Series()
      {
int arr[size],i=0,count=0,num,NumberOfSeries=0,seriesLong=0;
printf("Enter to 100 positive integers   negative to stop  n");
do{
    scanf("%d",&num);
    arr[i]=num;
    i++;
    count++;
}while (num>0);
printf("the array is:n");
for(i=0;i<count;i++)
{
    printf("%d ",arr[i]);
}

for(i=0;i<count-1;i++)
{
    while(arr[i]==arr[i+1]-1)
    {
          i have no idea what to do here
        }

}
 }
#include <stdio.h>
int main(){
    int arr[] = {12,3,4,23,5,46,5,6,7,78,67,68,134,45,46,47,67,11,23,18,-3};
    int count = 21;
    int i;
    int pos=0, len=0;
    for(i=0;i<count-1;++i){//i<count-1-len
        int k;
        for(k=0;arr[i+k]<arr[i+k+1];++k)
            ;
        if(k>len){
            len = k;
            pos = i;
        }
        i += k;
    }
    printf("Longest series: ");
    for(i=pos;i<=pos+len;++i)
        printf("%d ", arr[i]);
    printf("n");
    return 0;
}

最新更新