• hdu 2067


    #include<iostream>
    #include<cstdio>
    using namespace std;
    long long    dp[38][38];
    int main()
    {
        for(int i=0;i<=37;i++)
            dp[0][i]=1;
        int n,cas=0;
        while(~scanf("%d",&n)&&n!=-1)
        {
            cas++;
            for(int j=1;j<=n;j++)
                for(int i=1;i<=j;i++)
                    if(i!=j)
                         dp[i][j]=dp[i-1][j]+dp[i][j-1];
                   else
                         dp[i][j]=dp[i-1][j];
            cout<<cas<<" "<<n<<" "<<2*dp[n][n]<<endl;
        }
        return 0;
    }

    一道简单的dp,不过要注意的是因为最后数字很大,所以dp数组要换成long long,,好吧,,承认我第一次也在这个上挂了,以后打比赛的时候

    看到最后结果很大时,要注意换成long long输出,其实这道题目应该也可以卡塔兰,容我先做做

    #include<iostream> #include<cstdio> using namespace std; long long    h[38]; int main() {     h[0]=1;h[1]=1;     for(int i=2;i<=36;i++)         for(int j=0;j<=i-1;j++)             h[i]+=h[j]*h[i-1-j];     int n,cas=1;     while(~scanf("%d",&n)&&n!=-1)         cout<<cas++<<" "<<n<<" "<<2*h[n]<<endl;     return 0; }

    /***做完了,卡塔兰,之所以可以卡塔兰是因为以左下三角形为例,可以把向下走设为入栈,往右走设为出栈,不难看出就是卡塔兰,本题

    尤其要注意的是初始值的设定,当n==1或0时,都只有一种方法到达,故h[1]=h[0]=1

    你说,我们都会幸福的,对吧?
  • 相关阅读:
    Mac10.12下Python3.4调用oracle
    java或Jmeter实现两个日期相加减(2003-06-01-2003-05-01)
    Jmeter使用JDBC请求简介
    草火论
    学习五有
    中国特色的信息技术实践中的两种思路:信息索引化和信息持久化
    软件工程基本原理
    东亚文化原理
    临死之前我要写一本《中国哲学史——以自然主义和人道主义的矛盾为视角》
    总体软件观五个规律
  • 原文地址:https://www.cnblogs.com/smilesundream/p/6642581.html
Copyright © 2020-2023  润新知