hdu 2563

统计问题

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 5229    Accepted Submission(s): 3060

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

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

这道题就是一递推题,分两种情况,就是向上走的a[n]向侧边走的b[n],则总共求得步骤数s[n]=a[n]+b[n]

因为向上的路线就有一条 所以有a[n]=a[n-1]+b[n-1](就是走第n-1步的时候的总步骤数乘一),要是向侧边

走因为后路已无,向上走的有两条(左上,右上),向上走的还有一条所以有b[n]=2*a[n-1]+b[n-1].则通过

这几个式子得,f[n]=2*f[n-1]+f[n-2];所以有一下代码;

#include<stdio.h>

int main()

{

int i,t,n;

int a[22]={0,3,7};

for(i=3;i<22;i++)

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

scanf("%d",&t);

while(t--)

{

scanf("%d",&n);

printf("%d\n",a[n]);

}

return 0;

}

hdu 2563

时间: 2024-08-09 03:04:43

hdu 2563的相关文章

hdu 2563 -统计问题 【递推关系】

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

ACM: HDU 2563 统计问题-DFS+打表

HDU 2563 统计问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u HDU 2563 Description 在一无限大的二维平面中,我们做如下假设: 1.  每次只能移动一格: 2.  不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走): 3.  走过的格子立即塌陷无法再走第二次: 求走n步不同的方案数(2种走法只要有一步不一样,即

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]的递推公式得

HDU 2563 统计问题 (DFS + 打表)

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

HDU 2563 统计问题(递归,思维题)

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

C语言_数学(1)___统计问题(Hdu 2563)

Problem Description 在一无限大的二维平面中,我们做如下假设: 1.  每次只能移动一格: 2.  不能向后走(假设你的目的地是"向上",那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走): 3.  走过的格子立即塌陷无法再走第二次: 求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案). Input 首先给出一个正整数C,表示有C组测试数据 接下来的C行,每行包含一个整数n (n<=20),表示要走n步. Output 请编程输出

hdu 2563 统计问题

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

hdu 2563 递推

#include <stdio.h> #include <string> #include <iostream> #include <string.h> #include <map> #define MAX 30 using namespace std; /* 一道很好的递推题,虽然思路是从discuss中获得,但是应该想简单些,从前一次走可获得, 每次向上走可以为下一次获得3步机会,而向左或者向右则只能由两种. */ int main() {

HDU分类

模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 12