poj1579--Function Run Fun

按题目的要求做记忆化递归

View Code
 1 #include <stdio.h>
 2 #include <string.h>
 3 int vis[21][21][21];
 4 
 5 int w(int a,int b,int c)
 6 {
 7     if(a <= 0 || b <= 0 || c <= 0)
 8         return 1;
 9     else if(a > 20 || b > 20 || c > 20)
10         return w(20,20,20);
11     else if(vis[a][b][c] > 0)
12         return vis[a][b][c];
13     else if( (a < b) && ( b < c ) )
14         return vis[a][b][c]=w(a,b,c-1) + w(a,b-1,c-1) - w(a,b-1,c);
15     else
16         return vis[a][b][c]=w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1); 
17 }
18 
19 int main(void)
20 {
21     int a,b,c;
22     while(1)
23     {
24         scanf("%d %d %d",&a,&b,&c);
25         if(a==-1 && b==-1 && c==-1) break;
26         memset(vis,0,sizeof(vis));
27         printf("w(%d, %d, %d) = %d\n",a,b,c,w(a,b,c));
28     }
29     return 0;
30 }
posted @ 2012-08-18 17:08  Wheat″  阅读(114)  评论(0)    收藏  举报