总结一类问题:铺地板砖,走楼梯,自然数拆分...
2014-04-20 14:57
267 查看
(1) 编程之美上的一题:能否用1×2的瓷砖去覆盖N×M的地板?
分析: (1) 如果N=1,M为偶数的话,1×2的瓷砖可以覆盖1×M的地板,在这种情况下,共需要M/2块瓷 砖
(2)如果N×M为奇数,也就是N和M都为奇数,则肯定不能用1×2的瓷砖去覆盖了
证明:假设能够用k块1×2的瓷砖去覆盖N*M(N,M都为奇数)的地板,设每块瓷砖的面积为1×2, 那么总的地板面积就为2k——必为偶数,又因为N,M都为奇数,也就是N×M的地板肯定为奇数,与1×2的瓷砖所能覆盖的面积相矛盾,所以肯定不能用1×2的瓷砖去覆盖它。
(3)N和M中至少有一个为偶数,不妨设M为偶数,那么既然我们可以用1×2的地板覆盖1×M的地 板,也可以简单地重复N次覆盖1×M的地板的做法,即可以覆盖N×M的地板。
扩展:求用1×2的瓷砖覆盖2×M的地板有几种方式?
设用1×2的瓷砖覆盖2×M的地板有F(M)种方式,其中F为M的函数,那么第一块瓷砖的放法如下图:
(1)第一块瓷砖竖着放
(2)第一块瓷砖横着放
通过图(1),(2)可以看出,第一块瓷砖的放法要么是竖着放,要么是横着放。
当第一块瓷砖竖着放的时候,问题转换成求1×2的瓷砖覆盖剩下的2×(M-1)的方式,即F(M-1)
当第一块瓷砖横着放的时候(必有另一块瓷砖放在其正下方,如图(2)所示),问题转换成求用1×2的瓷砖覆盖剩下的2×(M-2)的方式,即F(M-2)。
在求F(M-1)和F(M-2)时,由于第一列地板的覆盖方式已经不同,F(M-1)种覆盖方式和F(M-2)种覆盖方式没有重叠,故F(M) = F(M-1)+F(M-2),其中,F(1) =1,F(2) =2.
算法: 与走楼梯的算法一样。
楼梯的走法(华为机试模拟题中的一题)一个楼梯有N阶,从下往上走,一步可以走一阶,也可以走两阶,有多少种走法。
递归算法:
(3)自然数拆分法,没搞明白~~待续.....
分析: (1) 如果N=1,M为偶数的话,1×2的瓷砖可以覆盖1×M的地板,在这种情况下,共需要M/2块瓷 砖
(2)如果N×M为奇数,也就是N和M都为奇数,则肯定不能用1×2的瓷砖去覆盖了
证明:假设能够用k块1×2的瓷砖去覆盖N*M(N,M都为奇数)的地板,设每块瓷砖的面积为1×2, 那么总的地板面积就为2k——必为偶数,又因为N,M都为奇数,也就是N×M的地板肯定为奇数,与1×2的瓷砖所能覆盖的面积相矛盾,所以肯定不能用1×2的瓷砖去覆盖它。
(3)N和M中至少有一个为偶数,不妨设M为偶数,那么既然我们可以用1×2的地板覆盖1×M的地 板,也可以简单地重复N次覆盖1×M的地板的做法,即可以覆盖N×M的地板。
扩展:求用1×2的瓷砖覆盖2×M的地板有几种方式?
设用1×2的瓷砖覆盖2×M的地板有F(M)种方式,其中F为M的函数,那么第一块瓷砖的放法如下图:
(1)第一块瓷砖竖着放
(2)第一块瓷砖横着放
通过图(1),(2)可以看出,第一块瓷砖的放法要么是竖着放,要么是横着放。
当第一块瓷砖竖着放的时候,问题转换成求1×2的瓷砖覆盖剩下的2×(M-1)的方式,即F(M-1)
当第一块瓷砖横着放的时候(必有另一块瓷砖放在其正下方,如图(2)所示),问题转换成求用1×2的瓷砖覆盖剩下的2×(M-2)的方式,即F(M-2)。
在求F(M-1)和F(M-2)时,由于第一列地板的覆盖方式已经不同,F(M-1)种覆盖方式和F(M-2)种覆盖方式没有重叠,故F(M) = F(M-1)+F(M-2),其中,F(1) =1,F(2) =2.
算法: 与走楼梯的算法一样。
楼梯的走法(华为机试模拟题中的一题)一个楼梯有N阶,从下往上走,一步可以走一阶,也可以走两阶,有多少种走法。
递归算法:
(3)自然数拆分法,没搞明白~~待续.....
相关文章推荐
- 自然数的拆分问题(递归)
- 浅谈一类差分约束系统问题的解法与总结
- [研究总结]一类可以用二分图来描述的博弈问题
- [研究总结]ACM中一类基于Markov链模型的期望问题
- 总结一类编程题--数组的n项和为M的存在性问题
- 对于一类离散的概率DP问题的总结(第一次)
- 【课件】自然数的拆分问题
- 爬楼梯问题总结(持续更新)
- 总结#3--一类最小割问题
- 一个风控计算负载过高到mysql主从拆分暴露的各种设计复杂性问题以及解决方法总结
- 图论中一类问题的总结 :必须边(点) 可行边(点)
- 自然数拆分问题
- 【4006】自然数的拆分问题
- 总结#2----一类贪心问题
- 背包问题总结第一讲——可拆分背包
- 背包问题总结第一讲——可拆分背包
- Silverlight Xap包、配置文件修改后不能自动更新问题处理方式总结
- PHP大小写问题总结
- PHP函数之CURL: 常见问题总结
- 性能测试问题总结2