zoukankan      html  css  js  c++  java
  • uva 10918 Tri Tiling

    递推

    参考:http://hi.baidu.com/gbr12345/item/b1686d3e4d2c5584b611db64

    题意:输入n要拼成一个3*n的矩形,现有无限的2*1的小矩形可以提供,能有多少种不同的拼凑方案

    这题一看就觉得是组合数字或者是递推,看了几下确定递推更好做。然后想了下怎么递推。1.就按照n从小到大来推,但是找不出什么规律。2.按照面积来递推,先凑出面积为2的,再面积为4,为6……然后对于3*n的面积是多少就直接输出即可,这种思想感觉非常接近了但是还是不行,因为处理不了重复的情况

    最后无奈看了解题报告,不过还是不知道原作者怎么想到的这个递推公式

    #include <cstdio>
    #define N 35
    long long dp[N],sum[N];
    
    void init()
    {
        dp[0]=1; dp[2]=3;
        sum[0]=1; sum[2]=4;
        for(int i=4; i<=30; i+=2)
        {
            dp[i]=3*dp[i-2]+2*sum[i-4];
            sum[i]=sum[i-2]+dp[i];
        }
        return ;
    }
    
    int main()
    {
        int n;
        init();
        while(scanf("%d",&n)!=EOF && n!=-1)
            printf("%lld\n",dp[n]);
        return 0;
    }
  • 相关阅读:
    ASP.NET使用SWFUpload上传大文件教学
    Gridview自定义分页(转载)
    扩展GridView之个性分页(转载)
    畅通工程
    一个人的旅行
    Stockbroker Grapevine
    Arbitrage
    More is better
    HDU Today
    Minimum Transport Cost
  • 原文地址:https://www.cnblogs.com/scau20110726/p/2916074.html
Copyright © 2011-2022 走看看