本文主要是介绍铺瓷砖问题 HDU 2046 骨牌铺方格 + POJ 2663 Tri Tiling (递推),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
骨牌铺方格
Memory Limit: 65536/32768 K (Java/Others)
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
1 3 2
1 3 2
思路:n长度的骨牌,来自n-1长度的骨牌+最右边竖着放的,以及n-2长度的骨牌+最右边两横着放的。所以是斐波那契的关系。
注意n=50时会超int。
完整代码:
/*15ms,208KB*/#include<cstdio>long long f[52];int main()
{int n, i;f[1] = f[2] = 1;for (i = 3; i < 52; ++i) f[i] = f[i - 1] + f[i - 2];while (~scanf("%d", &n))printf("%I64d\n", f[n + 1]);return 0;
}
POJ 2663 Tri Tiling那题一样的思路,我就不贴代码了
http://poj.org/problem?id=2663
PS:递推公式为f[i]=4*f[i-2]-f[i-4]
这篇关于铺瓷砖问题 HDU 2046 骨牌铺方格 + POJ 2663 Tri Tiling (递推)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!