Выделить знакочередующуюся подпоследовательность наибольшей длины и упорядочить ее по возрастанию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дана последовательность a1,...,an (n<=100) действительных чисел. Выделить из нее знакочередующуюся подпоследовательность наибольшей длины и упорядочить ее по возрастанию.

Решение задачи: «Выделить знакочередующуюся подпоследовательность наибольшей длины и упорядочить ее по возрастанию»

textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
 
int main()
{
    int i, j, n, pr, max=INT_MIN;
    int LONG=1, T1, T2, pass=0, hold=0;
    float a[100], b[100];
 
    printf("N=");
    scanf("%d",&n);
 
    for(i=0;i<n;i++)
    {
    printf("A[%d]=", i);
    scanf("%f", &a[i]);
    }
 
    for(i=0;i<n;i++)
    {
    pr=a[i]*a[i+1];
    if(pr<0){
    LONG++;}
    else
    if(LONG>max)
    {
    T1=i-LONG;
    T2=i;
    max=LONG;
    LONG=0;
    }
    }
 
    for(i=0,j=T1;i<max,j<=T2;i++,j++)
    {
    b[i]=a[j];
    printf("b[%d]=%.2f\n",i, b[i]);
    }
 
    for(pass=1;pass<=n-1; pass++)
        for(i=0;i<=n-2;i++)
    if(b[i]>b[i+1]) {
        hold=b[i];
        b[i]=b[i+1];
        b[i+1]=hold;
    }
 
    printf("\n");
 
    for(i=0;i<=max;i++)
        printf("b[%d]=%.2f\n",i, b[i]);
 
return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.308 из 5
Похожие ответы