当前位置 博文首页 > Keven_11的博客:C++题解:铺砖
?????目录
题目?
题解
对于一个?2?行?N?列的走道。现在用?1×2,2×2?的砖去铺满。问有多少种不同的方式。
下图是一个?2?行?17?列的走道的某种铺法。
输入格式
一个数字?N,0≤n≤250。
输出格式
方案数。(对 100007?取模)。
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为?
wall.in
,输出文件为?wall.out
样例输入1
2样例输出1
3样例输入2
8样例输出2
171题解:
知识点:动态规划
分析:设dp[i]表示2行i列的铺砖方案数,考虑第i列,它可以由1个1*2竖放铺成,方案数量即dp[i-1],也可由1个2*2覆盖,方案数量即dp[i-2],也可由2个1*2横放覆盖,方案数量即dp[i-2],所以可得状态转移方程dp[i]=dp[i-1]+2*dp[i-2];,其中,dp[1]=1,dp[2]=3。
代码:
cs#include<iostream> #include<cstdio> using namespace std; const int N=255,mod=100007; int dp[N]; int main(){ freopen("wall.in","r",stdin); freopen("wall.out","w",stdout); dp[1]=1;//注意初始化 dp[2]=3; for (int i=3;i<=N;i++){//注意从3开始 dp[i]=(dp[i-1]%mod+2*dp[i-2]%mod)%mod;//注意取余方式 } int n; cin>>n; cout<<dp[n]<<endl; return 0; }
下一篇:没有了
最新 更多<<
Keven_11的博客:C++题解:铺砖 Keven_11的博客:C++题解:冒泡排序生成图 Keven_11的博客:C++题解:糖果 Keven_11的博客:C++题解:islands打炉石传说 Keven_11的博客:C++题解:位运算 Keven_11的博客:主定理 Keven_11的博客:C++基础:关于结构体重载运算符的重要细节 Keven_11的博客:C++基础:二叉树性质 大番薯:编程术语英汉对照 英雄哪里出来:?算法入门?《位运算 - 异或》简单01 —— LeetCod 英雄哪里出来:?算法入门?《位运算 - 位与》简单02 —— LeetCod 英雄哪里出来:?算法入门?《简单排序》简单01 —— LeetCode 217 英雄哪里出来:?算法入门?《简单排序》简单02 —— LeetCode 88. 英雄哪里出来:?算法入门?《坐标转换》中等01 —— LeetCode 74. 英雄哪里出来:?算法入门?《递推 - 二维》简单01 —— LeetCode 英雄哪里出来:??光天化日学C语言??(26)- if else 语句 | if ( 英雄哪里出来:?算法入门?《动态规划 - 线性DP》简单01 —— Lee 英雄哪里出来:?算法入门?《动态规划 - 线性DP》中等01 —— Lee 英雄哪里出来:?算法入门?《线性枚举》简单03 —— LeetCode 26. 英雄哪里出来:?算法入门?《动态规划 - 线性DP》简单02 —— Lee 英雄哪里出来:??光天化日学C语言??(27)- 条件运算符 | 唯一的 英雄哪里出来:?算法入门?《线性迭代》简单03 —— LeetCode 412 英雄哪里出来:?算法入门?《坐标转换》简单01 —— LeetCode 566 英雄哪里出来:《画解数据结构》(1 - 1)- 数组 英雄哪里出来:《画解数据结构》(1 - 2)- 字符串 英雄哪里出来:《画解数据结构》(1 - 3)- 链表 英雄哪里出来:《画解数据结构》(1 - 4)- 双向链表 g5703129的博客:java学习笔记总结,持续更新中 晴天的专栏:怎样规划你毕业以后的人生 GooReey的博客:【全栈最全Java框架总结】SSH、SSM、Springboot