2014-04-03 25 views
-8

我有這個任務的問題:函數的算法是什麼,檢查升序數組有多少個序列。並檢測最長序列c

寫一個100正數的數組,直到負數出現; 然後檢查以升序排列已然後寫入所述陣列中的第一最長系列多少系列這意味着,如果我有2系列以升序有4個數字,我將寫頭4號出現

例如: 陣列: 12,3,4,23,5,46,5,6,7,78,67,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 
     } 


} 

} 
+3

首先展示你的工作 – EmptyData

+1

'5 6 7 78'是什麼呢? – BLUEPIXY

回答

0
#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; 
}