第七次测试 斐波那契数列+初级递归例题

A.

有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
其中,蜂房的结构如下所示。
在这里插入图片描述
Input
输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。
Output
对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。
Sample Input
2
1 2
3 6
Sample Output
1
3

第一题一眼看上去有点蒙圈,但是多排列几个数值后你会发现它非常眼熟,(那啥那啥波数列)
于是熟练的敲代码,ctrlA ctrlC ctrlV,嗯,等着转圈,wa。、
WTF???
秉持着ak爷的大力出奇迹,改了改无关紧要的地方继续提交,emmmmmmm,WA。
哪错了?还是老毛病,爆int了

#include<stdio.h>
int main ()
{
	long long s[100];
	int a,b;
	int n;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d%d",&a,&b);
		int t=b-a;
		
		s[1]=1;
		s[2]=2;
		for(int i=3;i<=t;i++)
		{
			s[i]=s[i-1]+s[i-2];
		}
	    
		printf("%lld\n",s[t]);
		
	}
	return 0;
 }

把盛放计算结果的数组改成long long就可以了,于是你发现C题是多么简单。
C.
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
在这里插入图片描述
Input
输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0<n<=50)。
Output
对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。
Sample Input
1
3
2
Sample Output
1
3
2

直接贴代码

#include<stdio.h>
int main ()
{
	int n;
	long long a[100];
	while(~scanf("%d",&n))
	{
		a[1]=1;
		a[2]=2;
		for(int i=3;i<=n;i++)
		{
			a[i]=a[i-1]+a[i-2];
		}
		printf("%lld\n",a[n]);
	}
	return 0;
 } 

水题说完了接下来就要疯狂吐槽了
B.
人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题:

有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.

以上就是著名的RPG难题.

如果你是Cole,我想你一定会想尽办法帮助LELE解决这个问题的;如果不是,看在众多漂亮的痛不欲生的Cole女的面子上,你也不会袖手旁观吧?

Input
输入数据包含多个测试实例,每个测试实例占一行,由一个整数N组成,(0<n<=50)。
Output
对于每个测试实例,请输出全部的满足要求的涂法,每个实例的输出占一行。
Sample Input
1
2
Sample Output
3
6

这道题还真是槽点满满啊,题目描述什么的就不说了,浪费我打草纸真的不可饶恕,怎么说也好几毛钱,,,,,
在思考不出头绪后开始疯狂计数,拿到五个数字之后脑袋都大了,规律呢???
先随便试一个,然后提交n次,全红,WA哭了,大力出奇迹已经不好用了,开始研究到底有什么规律,然后灵光一闪。

#include<stdio.h>
int main ()
{
	int n;
	long long a[100];
	while(~scanf("%d",&n))
	{
		a[1]=3;
		a[2]=6;
		a[3]=6;
		
		for(int i=4;i<=n;i++)
		{
			a[i]=a[i-2]*2+a[i-1];
		}
		printf("%lld\n",a[n]);
	}
	return 0;
 } 

看代码很容易明白这道题怎么做,解释一下。
第N年的方法数是N-1年的加上2*N-1年的总数,原理高中就学过。

如果n-1格颜色和第一格颜色不相等,那么N格上只有一种颜色能选,所以方法数是n-1年的,
如果n-1格颜色和第一格颜色相等,那么N上我们有两种颜色可以选,在这里我们计算的是2*(n-2),为什么是n-2?拿N=4来举例子,n-1=3, 1和3上颜色相等,在n-1上是不存在的,实际上是n-2时的情况,所以计算的是2*(n-2)。
最后把两种情况相加输出就可以,注意盛放结果的依旧是long long。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值