Выделить знакочередующуюся подпоследовательность наибольшей длины и упорядочить ее по возрастанию - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д