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 }


浙公网安备 33010602011771号