HDU2563 统计问题【递推+打表】

统计问题

Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10928 Accepted Submission(s): 6379

Problem Description
在一无限大的二维平面中,我们做如下假设:
1、 每次只能移动一格;
2、 不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);
3、 走过的格子立即塌陷无法再走第二次;

求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。

Input
首先给出一个正整数C,表示有C组测试数据
接下来的C行,每行包含一个整数n (n<=20),表示要走n步。

Output
请编程输出走n步的不同方案总数;
每组的输出占一行。

Sample Input
2
1
2

Sample Output
3
7

Author
yifenfei

Source
绍兴托普信息技术职业技术学院——第二届电脑文化节程序设计竞赛

问题链接HDU2563 统计问题
问题简述:(略)
问题分析
????这个问题是递推计算问题,关键是如何得到递推式,以及初始项的值(可以用枚举法得到)。再一个就是需要打表。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C语言程序如下:

/* HDU2563 统计问题 */

#include <stdio.h>

#define N 20
int res[N + 1];

void maketable()
{
    int i;
    res[1] = 3;
    res[2] = 7;
    for(i = 3; i <= N; i++)
        res[i] = res[i - 2] + 2 * res[i - 1];
}

int main(void)
{
    maketable();

    int c, n;
    scanf("%d", &c);
    while(c--) {
        scanf("%d", &n);
        printf("%d\n", res[n]);
    }

    return 0;
}

原文地址:https://www.cnblogs.com/tigerisland45/p/10261210.html

时间: 2024-11-13 23:51:57

HDU2563 统计问题【递推+打表】的相关文章

HDU 2563 统计问题(递推)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2563 将向上移的步数设为a[n],将向左右移的步数设为b[n],有a[n]=a[n-1]+b[n-1],因为之前一步是向哪个方向,上移只有向上一个方向:b[n]=a[n-1]*2+b[n-1],因为之前一步若向上移,则接下来就有左右两个方向都可以移动,若之前向左或右,则这一步只能按照原来的方向移(原来的路已经坍陷). 得到走n步的方案有f[n]=a[n]+b[n],又由a[n]和b[n]的递推公式得

HDU2067/HDU1267 递推

小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9447    Accepted Submission(s): 4879 Problem Description 小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望.不过没过几天发现了棋盘的好玩之处.从起点(0,0)走到终点(n

【UVA】12034-Race(递推,组合数打表)

递推公式,假设第一名有i个人并列,那么: f[n] = C(n,i) * f[n - i]; 打出1 ~ 1000的所有组合数,之后记忆化搜索,需要打表. 14026995 12034 Race Accepted C++ 0.032 2014-08-12 11:47:47 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector&g

HDU2563 递推

统计问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8037    Accepted Submission(s): 4738 Problem Description 在一无限大的二维平面中,我们做如下假设:1.  每次只能移动一格:2.  不能向后走(假设你的目的地是"向上",那么你可以向左走,可以向右走,也可以向上走,但

The Nth Item 南昌网络赛(递推数列,分段打表)

The Nth Item \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 给出递推式,求解每次 \(F[n]\) 的值,输出所有 \(F[n]\) 的 \(xor\) 值. 思路 对于线性递推数列,可以用特征方程求出他的通项公式,比如这题 \[ F[n] = 3F[n-1]+2F[n-2] \x^2 = 3x+2 \x = \frac{3\pm \sqrt{17}}{2} \] 令 \(F[n] = C_1x_1^n + C_

一堆递推题

目录 一堆递推题 P1367[训练题]爬楼梯[2] 描述 輸入 輸出 輸入範例 1 輸出範例 1 提示 思路 铺瓷砖 描述 輸入 輸出 輸入範例 1 輸出範例 1 思路 城市路径 描述 輸入 輸出 輸入範例 1 輸出範例 1 提示 思路 彩带 描述 輸入 輸出 輸入範例 1 輸出範例 1 提示 思路 斐波那契前N项和 描述 輸入 輸出 輸入範例 1 輸出範例 1 提示 思路 偶数个3 描述 輸入 輸出 輸入範例 1 輸出範例 1 思路 回文拆分 描述 輸入 輸出 輸入範例 1 輸出範例 1 思路

从一道NOI练习题说递推和递归

一.递推: 所谓递推,简单理解就是推导数列的通项公式.先举一个简单的例子(另一个NOI练习题,但不是这次要解的问题): 楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可以一步上2阶,也可以一步上3阶,编程计算共有多少种不同的走法. 这个问题可以用递归来进行解决,但是解题时间1秒明显不够用.怎么办呢,可以考虑找到“规律”,然后推导公式解决问题,开始画图分析: 这是4个台阶时的全部7种走法,记作f(4)=7.现在观察右侧绿色走过的部分,1234四种情况是3个台阶时的4种走,法记

hdu2089(数位DP 递推形式)

不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 25802    Accepted Submission(s): 8967 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer).杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以

[sdut]2879计数dp……或者递推

第五届省赛C:colourful cupcakes N=60. 天真如我,居然在考虑搜索的算法/(ㄒoㄒ)/~~三叉树……3^60=10^24+……不计算考虑复杂度都是耍流氓>_< 再算了一下,感觉O(N^4)可以试试,60^4=10^8+……但是毕竟最差的情况嘛>_<,再看一下题解果然是4重循环的……计数……dp……(想到之前坚信的搜索不禁(*/ω\*)) 中间看到了一个三次动规六个方程的算法. 做麻烦了. 学长思路好快. #include<iostream> #in