题目:

代码:
#include <stdio.h>
#include<iostream>
using namespace std;
int sa[25][25][25];
int w(int a,int b,int c)
{
if(a<=0||b<=0||c<=0)
{
return 1;
}
if(a>20||b>20||c>20)
{
if(!sa[20][20][20])
{
sa[20][20][20]=w(20,20,20);
}
return sa[20][20][20];
}
if(a<b&&b<c)
{
if(!sa[a][b][c-1])
{
sa[a][b][c-1]=w(a,b,c-1);
}
if(!sa[a][b-1][c-1])
{
sa[a][b-1][c-1]=w(a,b-1,c-1);
}
if(!sa[a][b-1][c])
{
sa[a][b-1][c]=w(a,b-1,c);
}
return sa[a][b][c-1]+sa[a][b-1][c-1]+sa[a][b-1][c];
}
if(1)
{
if(!sa[a-1][b][c])
{
sa[a-1][b][c]=w(a-1,b,c);
}
if(!sa[a-1][b-1][c])
{
sa[a-1][b-1][c]=w(a-1,b-1,c);
}
if(!sa[a-1][b][c-1])
{
sa[a-1][b][c-1]=w(a-1,b,c-1);
}
if(!sa[a-1][b-1][c-1])
{
sa[a-1][b-1][c-1]=w(a-1,b-1,c-1);
}
return sa[a-1][b][c]+sa[a-1][b-1][c]+sa[a-1][b][c-1]-sa[a-1][b-1][c-1];
}
}
int main()
{
while(1)
{
int t1,t2,t3;
cin>>t1>>t2>>t3;
if(t1==-1&&t2==-1&&t3==-1)
{
break;
}
int temp=w(t1,t2,t3);
printf("w(%d, %d, %d) = %d\n",t1,t2,t3,temp);
}
}