zoukankan      html  css  js  c++  java
  • poj2506(Tiling)

    题目大意:

    给你一个2*N的矩形。 让你用2*1或者2*2的小矩形去拼成2*N的矩形。问你有多少种拼法。

    解题思路:

    类似于简单的骨牌铺路。

    N长度的矩形,可以由  前(N-1)种+最后一个放竖着的2*1小矩形  和  前(N-2)种+最后两位横着放两位2*1的小矩形  和  前(N-2)种+最后两位放一个两位2*2的小矩形。

    所以递推公式  f(n)=f(n-1)+f(n-2)+f(n-2).

    涉及到大数相加。  (需要整理大数相加,大数相减,大数相乘,大数相除的模板!)

    代码:

     1 #include<cstdio>
     2 #include<math.h>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 using namespace std;
     7 int a[255][1000];
     8 void inint()
     9 {
    10     int i,j,k;
    11     a[0][999]=1;
    12     a[1][999]=1;
    13     a[2][999]=3;
    14     for(i=3;i<255;i++)
    15         for(j=999;j>=0;j--)
    16         {
    17             a[i][j]+=a[i-1][j]+a[i-2][j]+a[i-2][j];
    18             if (a[i][j]>=10)
    19             {
    20                 int t=a[i][j];
    21                 a[i][j]=t%10;
    22                 a[i][j-1]+=t/10;
    23             }
    24         }
    25 }
    26 int main()
    27 {
    28     memset(a,0,sizeof(a));
    29     inint();
    30     int n;
    31     while(scanf("%d",&n)!=EOF)
    32     {
    33        int i;
    34        int ce=0;
    35        for(i=0;i<1000;i++)
    36        {
    37            if (!ce&&!a[n][i])
    38                continue;
    39             ce++;
    40             printf("%d",a[n][i]);
    41        }
    42        printf("
    ");
    43     }
    44     return 0;
    45 }
    View Code
    屌丝终有逆袭日,*******。
  • 相关阅读:
    java的应用项目
    项目评审ppt的纲要
    Spark环境搭建
    spark 环境搭建坑
    redis cluster 实现
    hadoop环境搭建编译
    centos 网络配置
    自定义shell开头PS1
    Centos. Mac 通过nfs 搭建共享目录
    mac系统中实现vitualBox中访问内网端口
  • 原文地址:https://www.cnblogs.com/ZhaoPengkinghold/p/3750218.html
Copyright © 2011-2022 走看看