杭电2045:不容易系列之(3)—— LELE的RPG难题5

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2045
很明显的能看出来这是一个找规律的题目
思路分析:
既然是找规律题目就需要先写出来前几项,然后再来分析
先画一个图:
这是不考虑最后一个与前面一个相同的情况
可以看出来当格子≤3的时候 方法依次为 3 6 6
很难的分析出来:
第n格的颜色受第一格和第n-1格影响。
当n≥4时
①当第n-1格和第1格的颜色相同时,第n格的颜色就有两种颜色且不跟第1格同色
在这里插入图片描述
所以简单的分析出来:
**第n-1格与第1格颜色相同的数量就是第n-2格的数量,所以当第n-1格与第1格颜色相同时第n格的颜色数量为 *f(n-2)*2

②当第n-1格的颜色与第1格不同时,那么第n格的颜色就会有两种,而其中一种一定与第1格的颜色相同
在这里插入图片描述
那么可以分析出来:当第n-1格的颜色与第一格不同时,那么第n格的颜色就是f(n-1)

③所以最终可以得出来通式:*f(n)=f(n-1)+f(n-2)2
代码如下:

#include <stdio.h>
int main()
{
	//因为最终数字会特别大 所以这里使用long long 型
	long long num[51] = { 0,3,6,6 };//从第一个格子开始
	for (int i = 4; i <= 50; ++i) {//存到数组中
		num[i] = num[i - 1] + num[i - 2] * 2;
	}
	int n;
	while (~scanf("%d", &n)) {
		printf("%lld\n", num[n]);//直接打印
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值