动态规划--牛客网19校招--魔法深渊
问题分析:月神每次可以爬1、2、4、8等台阶。我们需要计算爬出N层台阶的所有可能方法数。 动态规划递推关系:定义dp[n]为爬出n层台阶的方法数。每个dp[n]可以通过前面所有可能的步数(2^k)的结果累加得到。 初始化:dp[0] = 1(爬0层的方法数),dp[1] = 1(爬1层的方法数)。 填充dp数组:对于每个n,从2到1000,计算dp[n]为dp[n-1] + dp[n-2] + ...,直到步数超过n。 处理输入输出:读取多个测试用例,输出结果。 初始化: 动态规划计算:从2到1000依次计算每个dp[i],累加所有可能的步数(2^k)的结果,取模处理。 处理输入:读取测试用例数量M,逐个读取每个N,输出对应的dp[N]结果。
发布日期:2021-04-30 21:02:49
浏览次数:84
分类:精选文章
本文共 735 字,大约阅读时间需要 2 分钟。
为了解决月神爬出深渊的问题,我们可以使用动态规划来计算爬出每个台阶数的方法数。每次只能爬2的整数次幂个台阶,因此我们需要考虑所有可能的爬法组合。
方法思路
解决代码
MOD = 10**9 + 3max_n = 1000dp = [0] * (max_n + 1)dp[0] = 1dp[1] = 1for i in range(2, max_n + 1): t = 1 while t <= i: dp[i] += dp[i - t] dp[i] %= MOD t *= 2M = int(input())for _ in range(M): n = int(input()) print(dp[n] % MOD)
代码解释
dp数组初始化为1001个元素,dp[0]和dp[1]分别设为1。这种方法确保了计算的高效性和正确性,避免了递归的超时问题。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2026年06月18日 06时02分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php 时间日期函数,获取今天开始时间,结束时间
2023-02-28
php 标准规范
2023-02-28
PHP 浮点型精度运算相关问题
2023-02-28
php 浮点型计算精度问题
2023-02-28
php 特定时间段统计,jpgraph某个时间段的数据统计
2023-02-28
php 生成csv mac下乱码
2023-02-28
php 生成证书 签名及验签
2023-02-28
PHP 的标准输入与输出
2023-02-28
php 笔记 (早前的,很乱)
2023-02-28
PHP 第一天
2023-02-28
Redis使用量暴增,快速定位有哪些大key在作怪
2023-02-28
PHP 统计数据功能 有感
2023-02-28
SpringBoot处理JSON数据
2023-02-28
PHP 输入输出流合集
2023-02-28
php--防止sql注入的方法
2023-02-28
php-兔子问题,斐波那契数列
2023-02-28
php-有序数组合并后仍有序
2023-02-28
php-约瑟夫问题
2023-02-28
php.ini中常见的配置信息选项
2023-02-28