XTU OJ 1525瓷片

发布时间:2024年01月05日

题意

给定一个2n的地面,用11和1*2的瓷片铺满,问有多少种方案

数据范围

n<=30

输入

3
1
2
30

输出

2
7
1084493574452273

代码

#include<stdio.h>

int main()
{
	int t;
	scanf("%d",&t);
	
	long long a[40];
	a[0]=1,a[1]=2,a[2]=7;
	for(int i=3;i<=30;i++)
	{
		a[i]=3*a[i-1]+a[i-2]-a[i-3];
	}
	
	while(t--)
	{
		int n;
		scanf("%d",&n);
		
		printf("%I64d\n",a[n]);
	}
	
	return 0;
}

想法

这个是c语言期末考试的一道中等题,计算出公式算是最难的一步,代码看起来还是比较简短

感觉还是不是很理解,还是先放一下吧,以后说不定能想清楚,最后一列是两个1或者一个竖着的2,最后两列是两个横着的2或者一个横着的2,两个1,最后三列是两行12和21,上下交换交换得到另一种

最后一列是2种情况,最后两列是3种情况,最后三列及之后的情况是2种情况

假设懂了以上的说法,可以列出一个式子
在这里插入图片描述
把推导出来的公式表示出来,因为超过了int范围,所以使用long long ,然后用数组把答案存下来,打表操作,每一次输入就查询一次答案并输出

还是看下网课打下基础,看以后能不能懂

文章来源:https://blog.csdn.net/L3102250566/article/details/135407091
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。