私はこの問題を解決しています - > http://www.spoj.com/problems/COINS/。非常に簡単な DP アプローチを使用した非常に単純な DP 問題です。DP を使用するための問題ステートメントに十分なヒントが見つかりました。すべてのテスト ケースはコンパイラで完全に実行されていますが、SPOJ で WA を取得しています。私のコードは次のとおりです。
私のコード
#include <cstdio>
#include <map>
#include <cstring>
#include<algorithm>
using namespace std;
map< long long,long long > data;
map < long long,long long> :: iterator p;
int max(int a,int b)
{
if(a>b)return a;
return b;
}
long long calc(int n)
{
long long c;
if(n==0 || n==1 || n==2)
return n;
p = data.find(n);
if(p==data.end())
{
c = max(n, calc(n/2) + calc(n/3) + calc(n/4));
data.insert(p, pair < long long, long long > (n, c));
return c;
}
else return (*p).second;
}
int main()
{
int t;
long long n;
scanf("%d",&t);
if(t>10)return 0;
while(t--)
{
scanf("%lld",&n);
if(n<0 || n>1000000000)
break;
data.clear();
printf("%lld",calc(n));
}
return 0;
}
どこが間違っているのかを理解するのは本当に難しいと思います!
私のコードと矛盾するテストケースでも構いません。