zoukankan      html  css  js  c++  java
  • POJ 1579

     1 #include<iostream>
     2 #define MAXN 21
     3 #define NE -1234567
     4 using namespace std;
     5 int dp[MAXN][MAXN][MAXN];
     6 
     7 
     8 int my_fun(int a,int b,int c)
     9 {
    10     if(a <= 0 || b<= 0 || c <= 0)
    11     {
    12         return 1;
    13     }
    14     else if(a > 20 || b > 20 || c > 20)
    15     {
    16         if(dp[20][20][20] != NE)
    17         {
    18             return dp[20][20][20];
    19         }
    20         else
    21         {
    22             dp[20][20][20] = my_fun(20,20,20);
    23             return dp[20][20][20];
    24         }
    25     }
    26     else if(a < b && b < c)
    27     {
    28         if(dp[a][b][c-1] != NE && dp[a][b-1][c-1] != NE && dp[a][b-1][c] != NE)
    29         {
    30             return dp[a][b][c-1] + dp[a][b-1][c-1] - dp[a][b-1][c];
    31         }
    32         else
    33         {
    34             dp[a][b][c-1] = my_fun(a,b,c-1);
    35             dp[a][b-1][c-1] = my_fun(a,b-1,c-1);
    36             dp[a][b-1][c] = my_fun(a,b-1,c);
    37             return dp[a][b][c-1] + dp[a][b-1][c-1] - dp[a][b-1][c];
    38         }
    39     }
    40     else
    41     {
    42         if(dp[a-1][b][c] != NE && dp[a-1][b-1][c] != NE && dp[a-1][b][c-1] != NE && dp[a-1][b-1][c-1] != NE)
    43         {
    44             return dp[a-1][b][c] + dp[a-1][b-1][c] + dp[a-1][b][c-1] - dp[a-1][b-1][c-1];
    45         }
    46         else
    47         {
    48             dp[a-1][b][c] = my_fun(a-1,b,c);
    49             dp[a-1][b-1][c] = my_fun(a-1,b-1,c);
    50             dp[a-1][b][c-1] = my_fun(a-1,b,c-1);
    51             dp[a-1][b-1][c-1] = my_fun(a-1,b-1,c-1);
    52             return dp[a-1][b][c] + dp[a-1][b-1][c] + dp[a-1][b][c-1] - dp[a-1][b-1][c-1];
    53         }
    54     }
    55 
    56 }
    57 
    58 int main()
    59 {
    60     //freopen("acm.acm","r",stdin);
    61     int a;
    62     int b;
    63     int c;
    64     int i;
    65     int j;
    66     int k;
    67     for(i = 0; i < MAXN; ++ i)
    68     {
    69         for(j = 0; j < MAXN ; ++ j)
    70         {
    71             for(k = 0; k < MAXN; ++ k)
    72             {
    73                 dp[i][j][k] = NE;
    74             }
    75         }
    76     }
    77     while(cin>>a>>b>>c)
    78     {
    79         if(a == -1 && b == -1 && c == -1)
    80             break;
    81         cout<<"w("<<a<<", "<<b<<", "<<c<<") = "<<my_fun(a,b,c)<<endl;
    82     }
    83 }

    关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

    技术网站地址: vmfor.com

  • 相关阅读:
    asp.net 实现pdf、swf等文档的浏览
    VS NuGet加载本地程序包
    《大型网站技术架构》读书笔记
    全排列组合算法
    GDI+绘制半圆按钮
    oracle dblink 查询 tns:无法解析指定的连接标识符
    最少有多少鸡蛋(求最小公倍数)
    杨辉三角
    Android开发面试题(一)
    2015年11月系统架构设计师案例分析题
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4566465.html
Copyright © 2011-2022 走看看