Наш профессор дал нам следующее задание:Решение проблем рекурсивно в C
A "correct" series is one in which the sum of its members equals to the index of its first member.
программа должна найти длину ДЛИННОГО «правильной» серии в серии из п чисел.
Например: если входная серия будет arr[4]={1, 1, 0, 0}
, то выход (самая длинная «правильная» серия) будет 3
.
arr[0]=1. 0!=1
поэтому самый длинный серия здесь 0
.
arr[1]=1,and 1=1.
, но следующие члены также суммируются до 1, как показано ниже:
1=arr[1]+arr[2]+arr[3] = 1+ 0 + 0
, поэтому самая длинная серия здесь 3
.
Выход в этом примере - 3
.
Это то, что я до сих пор:
int solve(int arr[], int index, int length,int sum_so_far)
{
int maxwith,maxwithout;
if(index==length)
return 0;
maxwith = 1+ solve(arr,index+1,length,sum_so_far+arr[index]);
maxwithout = solve(arr,index+1,length,arr[index+1]);
if(sum_so_far+arr[index]==index)
if(maxwith>maxwithout)
return maxwith;
return maxwithout;
return 0;
}
int longestIndex(int arr[], int index,int length)
{
return solve(arr,0,length,0);
}
Что я здесь делаю неправильно?
Мы не предполагаем, что мы выполняем это задание.
«сумма его членов равна индексу его первого члена» - индекс его первого члена всегда равен 0. Я думаю, у вас есть опечатка здесь. –
Я думаю, что он означает первый член серии, а не массив. В его примере серия содержит члены 1, 2 и 3, поэтому индекс первого члена равен 1. – brydgesk
@ Тим: не думайте, что это опечатка, так что, если это 0? @ Harry86: что не работает? вы получаете неправильный ответ, ошибку или что? – IVlad