Я пытался реализовать эту проблему из SPOJ: http://www.spoj.com/problems/COINS/ используя memoization, но я продолжаю получать Runtime error и не могу понять почему. Вот мой код:Ошибка выполнения в моем коде
#include<stdio.h>
long long int max(long long int a,long long int b)
{
if(a >= b)
return a;
else
return b;
}
long long int dp[100000];
long long solve(long long int n)
{
long long ans;
if(n<=50000)
return dp[n];
else
ans=(n,solve(n/2)+solve(n/3)+solve(n/4));
return ans;
}
int main()
{
long long int n;
int t;
for(int i = 0;i <=50000;i++)
{
dp[i] = max(i,dp[i/2] + dp[i/3] + dp[i/4]);
}
while((scanf("%d",&t))>0)
printf("%lld",solve(n));
return 0;
}
Вы пытались отлаживать свой код с помощью отладчика, такого как gdb? –
согласно задаче, максимальное значение ** t ** составляет 1,000,000,000, что больше максимального диапазона int. попробуйте ** long ** вместо ** int ** для ** t **. –
@MahediSabuj не на 32-битной системе. Даже подписанный 32-битный int может обрабатывать величины, превышающие 2 000 000 000. Подсказка: что такое 2 ** 31? –