• 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

    你说,我们都会幸福的,对吧?
  • 相关阅读:
    margin问题
    IE6里面子集尺寸大的会把父亲撑大
    第一个元素<flout>写了,想在他的旁边加一个元素.IE6会出现缝隙. 不要用margin撑开,要用flout
    兼容性,float
    HTML5的兼容问题以及调用js文件的方法
    表单
    表格的编写,课程表
    SmartThreadPool
    C# 多线程的等待所有线程结束的一个问题
    DataTable保存与读取 stream
  • 原文地址:https://www.cnblogs.com/smilesundream/p/6642581.html
Copyright © 2020-2023  润新知