andre_joy

导航

POJ 1579

地址:http://poj.org/problem?id=1579

题意:按照题目要求递归。

mark:直接递归肯定是TLE的。记忆化深度搜索。

代码:

#include <stdio.h>

int s[21][21][21];

int w(int a, int b, int c)
{
    if(a <= 0 || b <= 0 || c <= 0) return 1;
    if(a > 20 || b > 20 || c > 20) return s[20][20][20] = w(20, 20, 20);
    if(s[a][b][c]) return s[a][b][c];
    if(a < b && b < c) return s[a][b][c] = w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c);
    return s[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);
}

int main()
{
    int a,b,c;
    while(scanf("%d%d%d", &a, &b, &c), (a+1 || b+1 || c+1))
        printf("w(%d, %d, %d) = %d\n", a, b, c, w(a, b, c));
    return 0;
}

posted on 2012-07-12 18:50  andre_joy  阅读(165)  评论(0编辑  收藏  举报