POJ-2663 Tri Tiling

本文详细解析了POJ-2663 TriTiling问题,探讨了使用2×1方块拼接3×n方格的方案数量,并通过观察规律与动态规划方法找到了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

POJ-2663 Tri Tiling

题目链接:POJ-2663
POJ-2663
题目大意:用若干21的方块拼成3n的方格 问有多少种分法

解题思路:自己解决的方法是找规律 借助了Excel这神奇的东西 首先单数肯定不能拼成功 所有输入单数的一律输出0 因为是3n 所以我觉得后面的n一定以前面的n为根本
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
当n=2的时候 一共有三种方法 这三种也构成了后面的基底 n=2时 sum=3在这里插入图片描述
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
当n=4的时候 很简单 就将上面的基底在拼上一个基地就行 一共3乘3等于9种(优快云为什莫不能显示
号) 在这里插入图片描述
但是我们发现 当一号基底与自己拼搭、二号基底和自己拼搭时 (也就是图中的第三列第一二行的示例)他们可以发生转换形成新结果 效果如下图 n=4时 sum=9+2=11在这里插入图片描述
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
当n=6的时候 同样将上面的元素与基底进行拼搭 这里要注意了 上面的新产生的形式与基底搭配时基底在左和基底在右是两种不同的情况 所以如下图所示在这里插入图片描述
最后和n=4的时候的情况一样 也在边界处发生了旋转形成新结果 如下图所示
在这里插入图片描述
所以当n=6的时候 sum = 3乘9 + 1乘3乘2乘2 + 2 = 41
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
最后整理一下

  • n = 2 时sum = 3
  • n = 4 时sum = 11
  • n = 6 时sum = 41
  • n = 8 时sum = 153
    此时已经可以找到规律了
    an = 4*(an-2) - (an-4);
    方程出来了 代码就好写了

代码块:

#include<iostream>

using namespace std;

int main(){
	int n;
	int arr[31];
	arr[2] = 3;
	arr[4] = 11;
	while(cin>>n){
		if(n == -1) break;
		if(n == 0){
			cout<<"1"<<endl;
			continue;
		}
		if(n%2 == 1){
			cout<<"0"<<endl;
			continue;
		}
		for(int i=6;i<=n;i+=2){
			arr[i] = 4 * arr[i-2] - arr[i - 4];
		}
		cout<<arr[n]<<endl;
	}
	return 0;
} 

最后还有问题 为什莫会出现这样的式子?(待解)可以动态规划做(待解)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值