1 #include <iostream>
2 using namespace std;
3 #define SIZE 3
4 int map[100][SIZE];
5 int jisuan(int a,int b,int c);
6 int num[30][30][30]={0};
7 int main()
8 {
9 int result;
10 int n;
11 for(int i=0;i<100;i++)
12 {
13 for(int j=0;j<SIZE;j++)
14 {
15 cin >>map[i][j];
16 }
17 if(map[i][0]==-1&&map[i][1]==-1&&map[i][2]==-1)
18 {
19 n=i;
20 break;
21 }
22 }
23
24 for(int i=0;i<n;i++)
25 {
26 result=jisuan(map[i][0],map[i][1],map[i][2]);
27 cout <<"w("<<map[i][0];
28 cout <<", "<<map[i][1];
29 cout <<", "<<map[i][2];
30 cout <<") = "<<result<<endl;
31 }
32 return 0;
33 }
34
35
36 int jisuan(int a,int b,int c)
37 {
38 if(a<=0||b<=0||c<=0)
39 return 1;
40 if(a>20||b>20||c>20)
41 return jisuan(20,20,20);
42 if(num[a][b][c]>0)
43 return num[a][b][c];
44 if(a<b&&b<c)
45 num[a][b][c]=jisuan(a,b,c-1)+jisuan(a,b-1,c-1)-jisuan(a,b-1,c);
46 else
47 num[a][b][c]=jisuan(a-1,b,c)+jisuan(a-1,b-1,c)+jisuan(a-1,b,c-1)-jisuan(a-1,b-1,c-1);
48 return num[a][b][c];
49 }