hdu 2045(递推)
来源:互联网 发布:mysql监控sql语句 编辑:程序博客网 时间:2024/06/09 11:07
1个格子的时候 3种
2个格子的时候 6种
3个格子的时候 6种
4个格子的时候:
分两种情况:
- 前3个格子符合所有规则,即间隔颜色不同,同时第1个和第3个颜色也不同。这时候第4个格子只有1种选择
- 前3个格子不符合所有规则,即间隔颜色不同,但是第1个和第3个颜色相同。这时候,第4个格子有2种选择
那么怎么计算有4个格子的情况呢?
设函数f(n), f(1) = 3; f(2) = 6; f(3) = 6;
f(4) = f(3) + 2*f(2)=18;
当有n个格子,也分为两种情况,我们只需要考虑最后2个格子的情况
- 前n-1个格子符合所有规则,即间隔颜色不同,同时第1个和第n-1个颜色也不同。这时候第n个格子只有1种选择。前边n-1个格子有f(n-1)中涂法
- 前n-1个格子不符合所有规则,即间隔颜色不同,但是第1个和第n-1个颜色相同。这时候,第n个格子有2种选择。那么前n-2个格子有f(n-2)种可能,这种情况下有2*f(n-2)种涂法
从而有递推公式:f(n) = f(n-1) + 2*f(n-2)
AC:
#include<iostream>#include<cstdio>using namespace std;__int64 f[55];int main(){f[1] = 3,f[2] = 6,f[3] = 6;for(int i = 4; i <= 50; i++)f[i] = f[i-1] + 2*f[i-2];int n;while(cin>>n){cout<<f[n]<<endl;}return 0;}像这种有条件限制的递推,一定有"符合规则"和"不符合规则"这两种情况讨论。。此外,还要注意问题之间不能够重叠了。比如f(n)能够包括的情况,就不需要f(n-1)了,除非有f(n)不能涵盖的情况。。
0 0
- HDU 2045(递推)
- hdu 2045(递推)
- hdu 2045 递推
- HDU 2045 递推求解
- HDU-2045(递推)
- hdu 2045(简单递推)
- hdu 1165 递推
- HDU 2050 递推
- [HDU-1035] 递推
- hdu 1143 递推
- hdu 3664 递推
- hdu递归,递推
- HDU 递推 1290
- HDU 1165(递推)
- HDU-2049【递推】
- hdu 2042 递推
- hdu 4472 递推
- HDU - 5110(递推)
- 【Android】AS环境下,在布局中使用android:gravity="left/right"提示使用start/end
- 日经春秋 20160130
- BZOJ 4326 运输计划 transport 【NOIP 2015】【树链剖分】
- 使用HTML5构建iOS8原生APP
- 《iOS Human Interface Guidelines》——Edit Menu
- hdu 2045(递推)
- Android6.0 按键流程(二)KeyboardInputMapper扫描码转成键盘码
- 顺序表的就地倒置
- python string与list互转
- JS输入银行卡号,4位自动加空格
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined)--A. Slime Combining
- 匹配文本中获取网址
- 面试笔试杂项积累-leetcode 31-35
- 将顺序表L1中的数据进行分类,奇数存放到存到顺序表L2中,偶数存到顺序表L3中