The mook jong

 Accepts: 506
 Submissions: 1281
 Time Limit: 2000/1000 MS (Java/Others)
 Memory Limit: 65536/65536 K (Java/Others)
问题描写叙述
ZJiaQ为了强身健体。决定通过木人桩练习武术。

ZJiaQ希望把木人桩摆在自家的那个由1*1的地砖铺成的1*n的院子里。

因为ZJiaQ是个强迫症,所以他要把一个木人桩正好摆在一个地砖上,因为木人桩手比較长。所以两个木人桩之间地砖必须大于等于两个,如今ZJiaQ想知道在至少摆放一个木人桩的情况下,有多少种摆法。
输入描写叙述
输入有多组数据。每组数据第一行为一个整数n(1 < = n < = 60)
输出描写叙述
对于每组数据输出一行表示摆放方案数
输入例子
1
2
3
4
5
6
输出例子
1
2
3
5
8
12
这个题目有一个递推关系就是f[n]=f[n-1]+f[n-3]+1
怎么来的呢。就是当1*n-1个格子扩展到1*n的格子时,
当多出来的那一个格子为0时,数量=f[n-1]
当多出来的那一个格子为1时,数量=f[n-3]再加上新来的那个为1的格子,多了一种排法,即f[n-3]+1
事实上一个循环全然能够做,但当时着急对着这个公式写了一个递归,结果到五十几的时候出不来结果 ,太慢了,索性由于输入也不多就直接打表。。。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; int num;
long long a[65]; int main()
{
a[1]=1;
a[2]=2;
a[3]=3;
a[4]=5;
a[5]=8;
a[6]=12;
a[7]=18;
a[8]=27;
a[9]=40;
a[10]=59;
a[11]=87;
a[12]=128;
a[13]=188;
a[14]=276;
a[15]=405;
a[16]=594;
a[17]=871;
a[18]=1277;
a[19]=1872;
a[20]=2744;
a[21]=4022;
a[22]=5895;
a[23]=8640;
a[24]=12663;
a[25]=18559;
a[26]=27200;
a[27]=39864;
a[28]=58424;
a[29]=85625;
a[30]=125490;
a[31]=183915;
a[32]=269541;
a[33]=395032;
a[34]=578948;
a[35]=848490;
a[36]=1243523;
a[37]=1822472;
a[38]=2670963;
a[39]=3914487;
a[40]=5736960;
a[41]=8407924;
a[42]=12322412;
a[43]=18059373;
a[44]=26467298;
a[45]=38789711;
a[46]=56849085;
a[47]=83316384;
a[48]=122106096;
a[49]=178955182;
a[50]=262271567;
a[51]=384377664;
a[52]=563332847;
a[53]=825604415;
a[54]=1209982080;
a[55]=a[54]+a[52]+1;
a[56]=a[55]+a[53]+1;
a[57]=a[56]+a[54]+1;
a[58]=a[57]+a[55]+1;
a[59]=a[58]+a[56]+1;
a[60]=a[59]+a[57]+1;
while(cin>>num)
{
cout<<a[num]<<endl;
} return 0;
}

HDU 5366:The mook jong 递推的更多相关文章

  1. HDU 5366 The mook jong (简单DP)

    题意:ZJiaQ希望把木人桩摆在自家的那个由1*1的地砖铺成的1*n的院子里.由于ZJiaQ是个强迫症,所以他要把一个木人桩正好摆在一个地砖上,由于木人桩手比较长,所以两个木人桩之间地砖必须大于等于两 ...

  2. HDU 5366 The mook jong

    先暴力写了一个DFS,然后找规律.. #include<cstdio> #include<cstring> #include<cmath> #include< ...

  3. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  4. 题解报告:hdu 2084 数塔(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...

  5. HDU 5965 三维dp 或 递推

    题意:= =中文题 思路一:比赛时队友想的...然后我赛后想了一下想了个2维dp,但是在转移的时候,貌似出了点小问题...吧?然后就按照队友的思路又写了一遍. 定义dp[i][j][k],表示第i列, ...

  6. HDU 2569(简单的递推)

    彼岸 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  7. hdu 2050 折线分割平面 (递推)

    折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. hdu 1284 钱币兑换问题 (递推 || DP || 母函数)

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  9. hdu 5171(矩阵快速幂,递推)

    GTY's birthday gift Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

随机推荐

  1. 00049_super关键字

    1.子父类中构造方法的调用 (1)在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super();语句: (2)格式 调用本类中的构造方法 this(实参列表); ...

  2. Java-确定字符串是否包含子字符串

    利用String自带的函数和正则来实现 package com.tj; public class MyClass implements Cloneable { public static void m ...

  3. mac finder中添加自定义边栏

    想在finder中添加自定义边栏,操作如图所示: 选中边栏中任意边栏项,右键-在上层文件夹中显示,然后创建新的文件夹,将该文件夹拖到边栏中即可.

  4. ubuntu搭建LAMP全教程

    http://jingyan.baidu.com/article/a681b0de36ad683b18434691.html 本经验向你展示如何在ubuntu14.04 环境下搭建apache2 + ...

  5. [SQL server] IF ELSE 和 CASE WHEN 的用法

    /*判断一个数如果大于10,按10统计,如果小于0,按0统计*/ --方法a DECLARE @AA INT SET @AA=15 IF @AA>10 SELECT 10 ELSE IF @AA ...

  6. HDU 3947 River Problem

    River Problem Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ...

  7. TOJ 4008 The Leaf Eaters

    |A∪B∪C|=|A|+|B|+|C|-|A∩B|-|A∩C|-|B∩C|+|A∩B∩C| 这个是集合的容斥,交集差集什么的,这个在概率论经常用到吧 4008: The Leaf Eaters   T ...

  8. hdu2051

    二进制转换 #include <stdio.h> void change(int n){ ]; ; while(n){ num[cnt]=n%; n/=; cnt++; } cnt--; ...

  9. sql语句中的join连接(左连接、右连接、全连接、内连接)

    内部连接(inner join): select * from d_user a inner join D_ORGANIZATION b on a.COMPANY_XID=b.ID  内部链接也是排他 ...

  10. python生成器及迭代器

    一.迭代器 迭代器是访问集合元素的一种方式 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 迭代器有两个基本的方法: ...