zoukankan      html  css  js  c++  java
  • papamelon 352. 计算铺设方法的个数(算法问题实战策略)

    地址 https://www.papamelon.com/problem/352

    解答
    由于已经确定是2排待填充的地板,那么填充方法就是两种
    如图
    ACpQSfJCSbJ8qnDu5j0F9fmMEBrlhDQDpF9I0lUh0F5OBDGYUA0pxUu4dCgH9eFT.png
    又已知待填充的地板长度为n,题意可以转换为 要么选择1个竖方案填充要么选择2个横方案 ,问有达到长度n有多少种选择。
    再推断一步 使用1代替1个竖砖块方案,使用2代替2个横砖块方案, 请问仅使用连续的1和2,有多少种排列可以刚好达到和为n

    n=1的时候 只有1中答案 1
    n=2的时候 有两种答案 11 2
    n=3的时候 有3种答案 111 12 21
    n=4的时候 有5种答案 22 211 112 121 1111
    n=5的时候 有8种答案

    以上 这就是一个斐波那契数列,所以代码如下

    #include <iostream>
    
    using namespace std;
    
    int dp[150];
    
    int main()
    {
    	dp[1] = 1; dp[2] = 2;
    
    	for (int i = 3; i <= 101; i++) {
    		dp[i] = dp[i - 1] + dp[i - 2];
    		dp[i] %= 1000000007;
    	}
    
    	int n;
    	cin >> n;
    	while (n--) {
    		int a;
    		cin >> a;
    		cout << dp[a] << endl;
    
    	}
    	return 0;
    }
    

    我的视频题解空间

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    python 基础笔记十
    python 基础笔记十一
    python 基础笔记九-集合
    python 基础笔记八-time模块
    python 基础笔记七-OS模块
    python 基础笔记六-函数
    Python 基础笔记四
    4-5 元祖
    4-4 修改文件
    4-3 高效读取文件 --待完成
  • 原文地址:https://www.cnblogs.com/itdef/p/15663790.html
Copyright © 2011-2022 走看看