题目链接
题目说明直接写清楚是记忆化搜索……真贴心
#include<cstdio>
const int N=1e4+10;
typedef long long ll;
ll f[21][21][21];
ll work(ll a,ll b,ll c)
{
if(a<=0||b<=0||c<=0)return 1;
if(a>20||b>20||c>20)return f[20][20][20]=work(20,20,20);
if(f[a][b][c])return f[a][b][c];
if(a<b&&b<c)return f[a][b][c]=work(a,b,c-1)+work(a,b-1,c-1)-work(a,b-1,c);
return f[a][b][c]=work(a-1,b,c)+work(a-1,b-1,c)+work(a-1,b,c-1)-work(a-1,b-1,c-1);
}
int main()
{
//freopen("in.txt","r",stdin);
ll a,b,c;
while(scanf("%lld%lld%lld",&a,&b,&c)&&!(a==-1&&b==-1&&c==-1))
printf("w(%lld, %lld, %lld) = %lld\n",a,b,c,work(a,b,c));
return 0;
}