lightoj 1191 数位DP

来源:互联网 发布:web前端是编程嘛 编辑:程序博客网 时间:2024/06/11 04:26

几乎裸的数位DP了,但是妈蛋的没用longlong啊 然后用了longlong之后DFS的返回还是int没改回来,wa了半天啊卧槽

不说了上代码

注意memset放在里面会tle

AC代码如下:

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;long long dp[55][55][55];int N, K, M;long long DFS( int n, int k, int m ){    if( k <= 0 ){        if( n == 0 ){            return 1;        }else{            return 0;        }    }    if( dp[n][k][m] != -1 ){        return dp[n][k][m];    }    long long ans = 0;    for( int i = 1; i <= m && i <= n; i++ ){        ans += DFS( n - i, k - 1, m );    }  //  printf( "%d %d %d %d\n", n, k, m, ans );    return dp[n][k][m] = ans;}int main(){    int T, Case = 1;    memset( dp, -1, sizeof( dp ) );    scanf( "%d", &T );    while( T-- ){        scanf( "%d%d%d", &N, &K, &M );        printf( "Case %d: %lld\n", Case++, DFS( N, K, M ) );    }    return 0;}


0 0