蓝桥杯 第39级台阶 DP

题目描述: 

小明刚刚看完电影《第39级台阶》,离开电影院的时候, 他数了数礼堂前的台阶数,恰好是39级!

站在台阶前,他突然又想着一个问题:

如果我每一步只能迈上1个或2个台阶。 先迈左脚,然后左右交替,最后一步是迈右脚, 也就是

说一共要走偶数步。那么,上完39级台阶, 有多少种不同的上法呢?

请你利用计算机的优势,帮助小明寻找答案。

要求提交的是一个整数。 注意:不要提交解答过程,或其它的辅助说明文字。

基本思路:

将两步合并成一步,就化作了最基本的那种DP

相当于每两步可走2 ,3,4阶台阶,但是需要注意,这里的2,3,4阶台阶都是由两步合并

而来的。因此本身就有集中可能。

记base数组:base【i】表示两步恰好跨过的i阶台阶有几种可能性

如:base【1】=0;表示不可能两步恰好跨过1阶台阶

base【1】=0,base【2】=1,base【3】=2,base【4】=1;

状态转移方程:F[i]=F[i-1]*base[1]+F[i-2]*base[2]+F[i-3]*base[3]+F[i-4]*base[4];

代码实现:

 1 #include<stdio.h>
 2
 3 int F[100];//记录偶数步到第i阶台阶的情况数
 4 int base[5]={0,0,1,2,1};//表示两步恰好跨过的i阶台阶有几种可能性
 5
 6 int main()
 7 {
 8     int i;
 9     F[1]=0;
10     F[2]=1;
11     F[3]=2;
12     F[4]=2;
13
14     for(i=5;i<=40;i++)
15         F[i]=F[i-1]*base[1]+F[i-2]*base[2]+F[i-3]*base[3]+F[i-4]*base[4];
16
17     printf("%d\n",F[39]);
18
19     return 0;
20 }

运行结果:

时间: 2024-08-02 12:57:17

蓝桥杯 第39级台阶 DP的相关文章

第四届蓝桥杯javaC组_第39级台阶

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: 蓝桥杯赛题 * 作    者:   彭俊豪 * 完成日期:   2016   年 04月 01日 * 版 本 号:      001 * 对任务及求解方法的描述部分 * 问题描述: 小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着

18递归:39级台阶

题目]    小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!    站在台阶前,他突然又想着一个问题:    如果我每一步只能迈上1个或2个台阶.先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步.那么,上完39级台阶,有多少种不同的上法呢?    请你利用计算机的优势,帮助小明寻找答案. 要求提交的是一个整数. 注意:不要提交解答过程,或其它的辅助说明文字 import java.math.BigInteger; import jav

第39级台阶 每步1个或2个台阶 有多少种上法

小明刚刚看完电影<第39级台阶>.离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶.先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步.那么,上完39级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案. #define _CRT_SECURE_NO_WARNINGS#include <string.h>#include <stdlib.h>#include <

蓝桥杯 - 概率计算 (概率DP)

题目传送:蓝桥杯 - 概率计算 概率计算 时间限制:1.0s   内存限制:256.0MB 锦囊1 锦囊2 锦囊3 问题描述 生成n个∈[a,b]的随机整数,输出它们的和为x的概率. 输入格式 一行输入四个整数依次为n,a,b,x,用空格分隔. 输出格式 输出一行包含一个小数位和为x的概率,小数点后保留四位小数 样例输入 2 1 3 4 样例输出 0.3333 数据规模和约定 对于50%的数据,n≤5. 对于100%的数据,n≤100,b≤100. 思路:概率DP,好久没做DP题了,居然1A了,

蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿). 当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明. 请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝. 输入格式 输入一行3个整数,用空格分开:n

第五届蓝桥杯Java组大学校园选拔真题_n级台阶

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: 蓝桥杯赛题 * 作    者:   彭俊豪 * 完成日期:   2016   年 04月 01日 * 版 本 号:      001 * 对任务及求解方法的描述部分 * 问题描述: 有n级台阶.从地面(第0级)出发,首先连续的上台阶,上到不超过第n级的某一个位置后再连续的下台阶,直到回到地面.若每次

蓝桥杯 K好数(DP)

本文出自:http://blog.csdn.net/svitter 算法训练 K好数 时间限制:1.0s   内存限制:256.0MB 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22.30.31.33 共7个.由于这个数目很大,请你输出它对1000000007取模后的值. 输入格式 输入包含两个正整数,K和L. 输出格式 输出一个整数,表示答案

算法笔记_216:第六届蓝桥杯软件类校赛部分真题(Java语言C组)

目录 1 题目一 2 题目二 3 题目三 4 题目四 5 题目五 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 二项式的系数规律,我国数学家很早就发现了. 如[图1.png],我国南宋数学家杨辉1261年所著的<详解九章算法>一书里就出现了. 其排列规律: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 如下的程序,用来建立N行的杨辉三角形.请填写划线部分缺少的代码.

算法-蓝桥杯习题(六)

蓝桥杯习题 蓝桥杯练习系统习题加答案,总共分为6部分,90%习题使用C语言解答,部分使用C++或者Java.大部分习题为搜索参考或者别人提供所得,不足之处在所难免,恳请批评指正(预计200多题,习题仅供学习交流) 目录 算法训练(详见 算法-蓝桥杯习题(一))Go 算法训练(详见 算法-蓝桥杯习题(二))Go 算法提高(waiting...) 历届试题(详见 算法-蓝桥杯习题(六))Go 历届试题(详见 算法-蓝桥杯习题(七))Go 蓝桥杯练习系统评测数据 链接: http://pan.baid