poj解题报告——1579

来源:互联网 发布:大唐高鸿数据 编辑:程序博客网 时间:2024/06/05 15:54

        根据要求写状态方程,相当于一个深搜。

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int dp[25][25][25];int dfs(int a,int b,int c){    if(a<=0||b<=0||c<=0)        return 1;    if(a>20||b>20||c>20)        return dfs(20,20,20);    if(dp[a][b][c])        return dp[a][b][c];    if(a<b&&b<c)        dp[a][b][c]=dfs(a,b,c-1)+dfs(a,b-1,c-1)-dfs(a,b-1,c);    else        dp[a][b][c]=dfs(a-1,b,c)+dfs(a-1,b-1,c)+dfs(a-1,b,c-1)-dfs(a-1,b-1,c-1);    return dp[a][b][c];}int main(){    int a,b,c;    memset(dp,0,sizeof(dp));    while(scanf("%d%d%d",&a,&b,&c)!=EOF)    {        if(a==-1&&b==-1&&c==-1)            break;        printf("w(%d, %d, %d) = %d\n",a,b,c,dfs(a,b,c));    }    return 0;}


0 0