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. Java-构造一个字符串

    实用StringBuffer构造字符串 package com.tj; public class MyClass implements Cloneable { public static void m ...

  2. Python标准库之csv(1)

    Python标准库之csv(1) 1.Python处理csv文件之csv.writer() import csv def csv_write(path,data): with open(path,'w ...

  3. Excel读取导入数据库碰到的问题

    1.未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序. 下载并安装驱动:http://download.microsoft.com/download/7/0/3/703 ...

  4. iOS长按控件

    前言 网上看到一个button的长按控件效果不错,一个菱形从中间向两边增大,研究了下 原理 上图红色是控件上面放了视图,从上到下分别是view,normalLable,highlightLabel,b ...

  5. [SCOI2003]字符串折叠 (区间DP)

    题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作S = S X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) = SSSS…S(X个S). 如果A = A’, B = ...

  6. java面试题之hashcode相等两个类一定相等吗?equals呢?相反呢?

    答:hashcode相等,两个类不一定相等,equals也不一定相等: 反过来,equals相等,hashcode一定相等

  7. mybatis如何在控制台打印执行的sql语句

    log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log ...

  8. 转:C++ Vector用法深入剖析

    http://developer.51cto.com/art/201002/183645.htm C++编程语言中有一种叫做Vector的应用方法,它的作用在实际编程中是非常重要的.在这里我们将会为大 ...

  9. Java:Session详解

    以下情况,Session结束生命周期,Servlet容器将Session所占资源释放:1.客户端关闭浏览器2.Session过期3.服务器端调用了HttpSession的invalidate()方法. ...

  10. 关于时区、时间戳引起的bug理解

    时间戳定义:0时区1970年1月1日到现在的毫秒数,所以全世界同一时刻的时间戳都是一样的. 北京时间对应时间戳=unix(0时区对应时间的时间戳)-8*60*60*1000(8小时的毫秒数)----- ...