Не могу понять смысла задачи - C (СИ)

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

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

Совсем не поняла задачу, точнее, что от меня хотят объясните хотя бы, что здесь делать надо, уже несколько часов дальше условия дело не идет (Неубывающие цепочки) Пусть A=(aj), 1<= j<= n - последовательность из n положительных целых чисел. Ее подпоследовательность am+1, am+2, ... , am+k называется неубывающей цепочкой длины k, если am+1<= am+2<= ... <= am+k и am> am+1, am+k> am+k+1. При этом a1 всегда является началом цепочки, а an - окончанием или началом. Определить функцию CountSubSet(), получающую вектор B=(bj), 1<= j<= n, у которого bj является числом неубывающих цепочек длины j.

Решение задачи: «Не могу понять смысла задачи»

textual
Листинг программы
int A[] = { 10, 3, 3, 15, 14, 21 };
int B[1000];
int i, c;
int a_prev;
 
for (i = 0; i < 1000; i++)
{ 
  B[i] = 0; 
  if (i >= sizeof(A)/sizeof(int)) 
    B[i] = -1; 
}
 
a_prev = 0;
c = 0;
for (i = 0; i < sizeof(A)/sizeof(int); i++)
{
  if (A[i] >= a_prev)
  {
     a_prev = A[i];
     c++;
  }
  else
  {
     B[c-1]++;
     c = 1;
     a_prev = A[i];
  }
}
if (c != 0) B[c-1]++;

Объяснение кода листинга программы

  1. Объявлены массивы A[] и B[].
  2. Переменные i, c и a_prev инициализированы нулевыми значениями.
  3. В цикле for заполняются все элементы массива B[] нулями.
  4. Если индекс i больше или равен размеру массива A[] в байтах, деленному на размер одного int, то элемент B[i] устанавливается в -1.
  5. Переменная a_prev инициализируется значением первого элемента массива A[], а переменная c инициализируется значением 1.
  6. В цикле for происходит подсчет количества элементов массива A[], которые больше значения a_prev. При каждом увеличении значения a_prev на единицу, счетчик c увеличивается на единицу. Если встречается элемент A[i], который меньше значения a_prev, то значение счетчика c сбрасывается в 1, а значение a_prev обновляется.
  7. Если цикл for завершился, а значение счетчика c не равно нулю, то значение B[c-1] увеличивается на единицу.

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


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

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

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