2190 ACM 数学概率论的乘法和加法原则
2024-10-19 04:29:34
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2190
思路:明显我们要寻找 边长为n和边长为n-1,n-2,n-3·····的规律,这样得出一个递推公式就能方便的得出f(n)(边长为n的值)
由于只有两种类型的地板砖,2*2 1*1,所以最后加入的一行,可能是1*1的砖块,也可能是2*2砖块的一部分,所以 f(n)就和f(n-1)和f(2)有关
接下来推导:
由数学概论论可知:
两种个情况,不同情况之间用加号
同一情况下,的下一步操作的方法数 之间用乘法
1 第n行放的是1*1的砖块
所以只需要在f(n-1)的基础上放即可,且1*1砖块的方法只有一种
2 第n行放的是2*2砖块的一部分
所以在f(n-2)的基础上放即可,本来有三种的,但是舍弃1*1的情况,因为和上述情况重复,2*2放左边或右边,两种情况
结论:f(n)=f(n-1)*1+f(n-2)*2
代码:
#include<iostream>
#include<cstdio>
using namespace std; int main()
{
int c;
int sch[];
sch[]=;
sch[]=;
sch[]=;
for(int i=;i<;i++)
sch[i]=sch[i-]+sch[i-]*;
cin>>c;
while(c--)
{
int n;
cin>>n;
cout<<sch[n]<<endl;
}
return ;
}
最新文章
- 【Android接百度地图API】百度地图Demo点击按钮闪退
- iOS 企业包碰到的问题
- IOS 四舍五入 进一法 去尾法
- 【代码笔记】iOS-点击任何处,显示出红色的UIView
- QT 的下载地址
- ArcMap中,如何查看当前工具是否在执行?如何将工具调到前台来执行?
- 【持续集成】使用Jenkins实现多平台并行集成
- hdu 2736 Surprising Strings(类似哈希,字符串处理)
- Spring整合Ibatis
- Google桌面搜索引擎
- 怎样使CSS3中的animation动画当每滑到一屏时每次都运行
- 【转】win7与ubuntu双系统,删除ubuntu后,启动错误error:no such partition grub rescue的修复--不错
- 一句SQL实现MYSQL的递归查询
- Nagiosserver端安装部署具体解释(1)
- SpringMVC——DispatcherServlet的IoC容器(Web应用的IoC容器的子容器)创建过程
- Linux修改date
- Open Judge 2750 鸡兔同笼
- 使用 ctypes 进行 Python 和 C 的混合编程
- Redis基础、应用、第三方支持组件总结
- M2postmortem