首页 > 其他 > 详细

hdu-2045 简单递推 水

时间:2018-09-23 00:10:18      阅读:181      评论:0      收藏:0      [点我收藏+]

题意:

  一行长度为n的方格,只能使用三种颜色R、P、G来填充,且满足相邻方块不能同色,首尾方块不能同色。给出n,输出满足条件的着色方案数。

思路:

  简单递推,由n-1个方块推导出n个方块的情况,有以下两种情况:

    1.第n-1个方块与第1个方块不同色,满足条件。直接在n-1的满足基础上添加第n个,且第

n个只有一种选择。即F[n-1];

    2.第n-1个方块与第1个方块同色,不满足F[n-1],退至F[n-2],此时添加第n个方块时有两种选择。即F[n-2]*2。

  递推公式:F[n] = F[n-1] + 2 * F[n-2]

代码:

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     long long f[55];
 7     f[1] = 3;
 8     f[2] = 6;
 9     f[3] = 6;    //注意f[3]不能用递推公式得出
10     for(int i = 4; i < 51; i++)
11     {
12         f[i] = f[i - 1] + 2 * f[i - 2];
13     }
14     while(cin >> n)
15     {
16         cout << f[n] << endl;
17     }
18     return 0;
19 }

 

hdu-2045 简单递推 水

原文:https://www.cnblogs.com/friend-A/p/9691646.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!