Не могу понять смысла задачи - 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]++;
Объяснение кода листинга программы
- Объявлены массивы
A[]иB[]. - Переменные
i,cиa_prevинициализированы нулевыми значениями. - В цикле
forзаполняются все элементы массиваB[]нулями. - Если индекс
iбольше или равен размеру массиваA[]в байтах, деленному на размер одного int, то элементB[i]устанавливается в -1. - Переменная
a_prevинициализируется значением первого элемента массиваA[], а переменнаяcинициализируется значением 1. - В цикле
forпроисходит подсчет количества элементов массиваA[], которые больше значенияa_prev. При каждом увеличении значенияa_prevна единицу, счетчикcувеличивается на единицу. Если встречается элементA[i], который меньше значенияa_prev, то значение счетчикаcсбрасывается в 1, а значениеa_prevобновляется. - Если цикл
forзавершился, а значение счетчикаcне равно нулю, то значениеB[c-1]увеличивается на единицу.