Пользовательский ввод: 2 0 1 1 3 0 1 1 -1
Ожидаемый вывод: ДА.
Мой вывод: НЕТ.
Мой код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int pv(int *a, int i){ //Function to create positional value.
if(a[i]!=0) return (a[i]+i);
else return 0;
}
int main() {
//code
int i,j,k,check=0;
int *a = (int *)malloc(1024*sizeof(int));
for(i=1;;i++) { scanf("%d",a+i);
if(*(a+i)==-1) { i--; break; } }
a = realloc(a,(i+1)*sizeof(int));//Just to decrease the size.
//Array of numbers inputed with designation from 1 formed.
int max_pv =0;
for(k=1;k<i;){
for(j=k+1;j<=pv(&a[k],k);){
if(max_pv<pv(&a[j],j)) {
max_pv = pv(&a[j],j);
check =j;//Location of max_pv.
}
}
k = check;
if(max_pv==0) { printf("NO"); return 0; }
if(max_pv>=i) { printf("YES"); return 0;}
max_pv = 0;
}
}
Постановка задачи:
В качестве входных данных вы получите список неотрицательных целых чисел.Список заканчивается с -1, но -1 не является частью списка.Значение числа в этом списке обозначает его «размер прыжка».
Например, если число в местоположении i равно 3, то размер прыжка в этом элементе равен 3. Это означает, что все местоположения справа от этого местоположения, на расстоянии 3, достижимы из этогорасположение в одном прыжке.Точнее, за один «прыжок» Mr C может перейти из местоположения i в местоположение i + 1 или i + 2 или i + 3, если число в местоположении i равно 3.
Первый номер спискаговорят, что он находится в местоположении 1 (не как массивы, где первый элемент имеет индекс 0).Число в местоположении j будет называться «достижимым» из местоположения i, если оно может быть достигнуто за любое количество прыжков.Мистер С начинает с прыжка с места 1 (это его начальный прыжок).Теперь он может делать любое количество прыжков в любом порядке, как это разрешено приведенными выше правилами.Тем не менее, все прыжки производятся справа от списка, то есть никаких прыжков назад.
Вывести на печать вывод «YES» (без кавычек), если последнее местоположение в списке (т. Е. Местоположение перед -1) есть из местоположения 1, в противном случае вывести «NO» (без кавычек)).
Моя проблема:
Я попытался запустить отладчик для этого кода, и ошибка, которую я получаю, состоит в том, что функция pv возвращает ноль даже для k = 1.
В этом примере a [1] = 2. Таким образом, функция должна возвращать a [1] + 2 = 3. Но она возвращает 0.
Это в соответствии с отладчиком.Если какая-либо другая проблема не устранена, укажите и их.
Спасибо.