大致题意:现有两种方块(1X2,2X2),方块数量无限制。问用这两种方块填满2Xn的矩阵的填法有多少种。

分析:通俗点说,找规律。专业化一点,动态规划。

  状态d[i],表示宽度为i的填法个数。

  状态转移方程:d[0]=d[1]=1,i=0,1;

         d[i]=d[i-1]+d[i-2]*2;

  c或者c++写的话,先模拟下大数吧,java直接用大数类就行了。

c++

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std; struct BigInteger
{
int num[100];
int len;
};
BigInteger add(BigInteger a,BigInteger b)
{
BigInteger c;
c.len=0;
int len=max(a.len,b.len);
int left=0;
for(int i=0; i<len; i++,c.len++)
{
int tmp=a.num[i]+b.num[i]+left;
c.num[i]=tmp%10;
left=tmp/10;
}
if(len==a.len)
for(int i=len; i<b.len; i++,c.len++)
{
int tmp=b.num[i]+left;
c.num[i]=tmp%10;
left=tmp/10;
}
if(len==b.len)
for(int i=len; i<a.len; i++,c.len++)
{
int tmp=a.num[i]+left;
c.num[i]=tmp%10;
left=tmp/10;
}
if(left) c.num[c.len++]=1;
return c;
}
int main()
{
//freopen("in.txt","r",stdin);
int n;
BigInteger a,b,c;
while(cin>>n)
{
if(n==0 || n==1)
printf("1\n");
else
{
a.num[0]=a.len=1;
b.num[0]=b.len=1;
c.len=0;
for(int i=2; i<=n; i++)
{
c=add(add(a,a),b);
a=b;
b=c;
}
for(int i=c.len-1;i>=0;i--)
printf("%d",c.num[i]);
printf("\n");
}
}
return 0;
}

java

import java.math.BigInteger;
import java.util.Scanner; public class Main { public static void main(String args[]) {
int n;
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
n = scanner.nextInt();
BigInteger a = BigInteger.ONE;
BigInteger b = BigInteger.valueOf(3);
if (n == 1 || n == 0)
System.out.println(a);
else if (n == 2)
System.out.println(b);
else {
BigInteger ans = BigInteger.ZERO;
for (int i = 0; i < n - 2; i++) {
ans = a.multiply(BigInteger.valueOf(2)).add(b);
a = b;
b = ans;
}
System.out.println(ans);
}
}
} }

POJ 2506 Tiling dp+大数 水题的更多相关文章

  1. poj 3080 Blue Jeans(水题 暴搜)

    题目:http://poj.org/problem?id=3080 水题,暴搜 #include <iostream> #include<cstdio> #include< ...

  2. HDU-1042-N!(Java大法好 &amp;&amp; HDU大数水题)

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Subm ...

  3. POJ 3176 Cow Bowling (水题DP)

    题意:给定一个金字塔,第 i 行有 i 个数,从最上面走下来,只能相邻的层数,问你最大的和. 析:真是水题,学过DP的都会,就不说了. 代码如下: #include <cstdio> #i ...

  4. POJ 3984 - 迷宫问题 - [BFS水题]

    题目链接:http://poj.org/problem?id=3984 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, ...

  5. DP+贪心水题合集_C++

    本文含有原创题,涉及版权利益问题,严禁转载,违者追究法律责任 本次是最后一篇免费的考试题解,以后的考试题目以及题解将会以付费的方式阅读,题目质量可以拿本次作为参考 本来半个月前就已经搞得差不多了,然后 ...

  6. poj 1007:DNA Sorting(水题,字符串逆序数排序)

    DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 80832   Accepted: 32533 Des ...

  7. poj 1004:Financial Management(水题,求平均数)

    Financial Management Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 126087   Accepted: ...

  8. poj 1658 Eva's Problem(水题)

    一.Description Eva的家庭作业里有很多数列填空练习.填空练习的要求是:已知数列的前四项,填出第五项.因为已经知道这些数列只可能是等差或等比数列,她决定写一个程序来完成这些练习. Inpu ...

  9. poj 2506 Tiling(递推 大数)

    题目:http://poj.org/problem?id=2506 题解:f[n]=f[n-2]*2+f[n-1],主要是大数的相加; 以前做过了的 #include<stdio.h> # ...

随机推荐

  1. IEEE754标准

    以下计算按规格化规定: S:符号位 M:分数值 E:指数偏移值 单精度浮点数(32bit): NUM_single = (-1)^S *  1.M   *   2^(E-127) 双精度浮点数(64b ...

  2. Lua的string库函数列表

    基本函数 函数 描述 示例 结果 len 计算字符串长度 string.len("abcd") 4 rep 返回字符串s的n个拷贝 string.rep("abcd&qu ...

  3. 并发王者课-青铜7:顺藤摸瓜-如何从synchronized中的锁认识Monitor

    在前面的文章中,我们已经体验过synchronized的用法,并对锁的概念和原理做了简单的介绍.然而,你可能已经察觉到,有一个概念似乎总是和synchronized.锁这两个概念如影相随,很多人也比较 ...

  4. Zabbix企业分布式监控工具

    前言:在工作中常常需要对服务器进行监控,但是要选择一款合适监控软件可不容易,今天介绍下zabbix这款监控软件 一.Zabbix介绍1.Zabbix是一个企业级的.开源的.分布式的监控套件2.Zabb ...

  5. pytest - 打标记:mark功能

    对用例打标记,运行的时候,只运行打标记的用例.如冒烟测试 打标记步骤 1.先注册标记名 在配置文件:pytest.ini 注册标记名,注意必须是这个文件名 标签名加冒号后面可以写说明,必须是英文 2. ...

  6. Python+Selenium学习笔记16 - unittest单元测试框架

    unittest单元测试框架包括 Test Case,  Test Suite, Test Runner, Test Fixture Test Cases 组成Test Suite, Test Run ...

  7. Java | Stream流、泛型、多线程 | 整理自用

    1.lambda 表达式 lambda 的延迟执行 可以对程序进行优化,尤其是使用 if {} else {} 条件判断,先判断条件是否成立,再传入计算好的参数. functionName( para ...

  8. DDD中聚合、聚合根的含义以及作用

    聚合与聚合根的含义 聚合: 聚合往往是一些实体为了某项业务而聚类在一起形成的集合 , 举个例子, 社会是由一个个的个体组成的,象征着我们每一个人.随着社会的发展,慢慢出现了社团.机构.部门等组织,我们 ...

  9. 适用于CUDA GPU的Numba 随机数生成

    适用于CUDA GPU的Numba 随机数生成 随机数生成 Numba提供了可以在GPU上执行的随机数生成算法.由于NVIDIA如何实现cuRAND的技术问题,Numba的GPU随机数生成器并非基于c ...

  10. 使用nGraph的Intel&#174;Xeon&#174;上的高性能TensorFlow

    使用nGraph的IntelXeon上的高性能TensorFlow High-performance TensorFlow* on Intel Xeon Using nGraph 最近宣布了nGrap ...