2014-11-27 2 views
0

, пожалуйста, помогите мне найти, почему я получаю неправильный ответ для этого вопроса Bytelandian gold coins. здесь мое решение COINSBytelandian gold coins неправильный ответ каждый раз

#include <iostream> 
#include <cstdio> 
#include <map> 

#define max2(a, b) ((a) > (b) ? (a) : (b)) 

using namespace std; 

map <long long , long long > C; 

long long f(long long n) 
{ 
    if (n == 0) return 0; 

    long long r = C[n]; 

    if (r == 0) 
    { 
     r = max2(n , f(n/2)+f(n/3)+f(n/4)); 
     C[n] = r; 
    } 

    return r; 
} 

int main() 
{ 
    int t; 
    long long n; 

    scanf("%d",&t); 
    while(t--){ 
     scanf("%lld",&n); 
     printf("%lld\n",f(n)); 
    } 
    return 0; 
} 

Я новичок динамического программирования, так что я Google на этот вопрос, и я пытаюсь реализовать
от SPOJ_Coins,
, но все еще получаю неправильный ответ на обоих codechef.com и SPOJ.

+2

Просьба представить полный вопрос в теле самого вопроса (не ссылка), и соответствующая часть вашего кода. Вы также должны предоставить тестовый пример того, где ваш код не выполняет то, что он должен. – amit

+0

@amit: он дает правильный ответ для данного тестового примера в вопросе, я думал, что вопрос немного большой, чтобы публиковать здесь. – singhiskng

+0

@amit: я добавил свой код – singhiskng

ответ

2

Для решения этой проблемы вы должны вводить ввод до EOF. Но вы принимаете ввод с помощью тестового примера.

Попробуйте этот код:

#include <iostream> 
#include <cstdio> 
#include <map> 

#define max2(a, b) ((a) > (b) ? (a) : (b)) 

using namespace std; 

map <long long , long long > C; 

long long f(long long n) 
{ 
    if (n == 0) return 0; 

    long long r = C[n]; 

    if (r == 0) 
    { 
    r = max2(n , f(n/2)+f(n/3)+f(n/4)); 
    C[n] = r; 
    } 

    return r; 
} 

int main() 
{ 
    // freopen("input.txt","r",stdin); 
    // freopen("output.txt","w",stdout); 

    int t; 
    long long n; 
    { 
     while(scanf("%lld",&n)==1) 
     { 
      printf("%lld\n",f(n)); 
     } 
    } 
    return 0; 
} 
+0

спасибо, это была глупая ошибка – singhiskng

Смежные вопросы