文章

8

粉丝

140

获赞

20

访问

26.3k

头像
递推的的原理--参考斐波那契数列原理
P1029 重庆大学机试题
发布于2023年3月16日 11:47
阅读数 2.5k

我们根据它1*1为单位,那么则有两个1*1可以合并为一个1*2,三个1*1可以合并成一个1*3的方块的角度,我们可以得出以后类似的递推关系式,而且做这种一般规律题目我们都要想到借鉴我们的“老祖宗”——斐波那契数列

同样是可以理解成抽象数据模型:再加进新的下一个方块之前,首先会保留原始的状态数量为基线,新的方块则作为一个1*1的方块进行插入;那么根据题意,一共只有三种方块形式:1*1、1*2、1*3;那么接下来就插入的方块就和前一个方块组成一个新的1*2方块看作整体,那么剩余方块就是n-2,进行新的组合添加进之前的基数之中,以此类推·······于是就得到了递推式:第n个方块的组合数就是前三个已经得到的数组之和,那么以后碰到可以整合相容的题目,都可以用这种思路进行解析,然后敲写代码,所以只要知道了数列逻辑,那么写出代码也就是轻而易举的事情了

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	int a[105]={0,1,2,4};
	while(scanf("%d",&n)!=0){
		for(int i=4;i<=n;i++){
			a[i]=a[i-1]+a[i-2]+a[i-3];
		}
		if(n==0)break; 
	     else	printf("%d\n",a[n]);
	}
	
} 

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发