矩形覆盖问题

矩形覆盖

http://www.nowcoder.com/questionTerminal/72a5a919508a4251859fb2cfb987a0e6

简单的递归

  • 当n=1时,只能竖着覆盖,f(1)=1;

  • 当n=2时,既可以横着覆盖,也可以竖着覆盖,f(2)=2;

  • 当n=N时,只需要考虑第一块如何覆盖即可,详见下图:
    图片说明

  • 代码如下:

      public int rectCover(int target) {
    
          if (target <= 0) {
              return 0;
          }
          if (target == 1) {
              return 1;
          }
          if (target == 2) {
              return 2;
          }
          return rectCover(target - 1) + rectCover(target - 2);
      }
    
全部评论
这样会导致重复计算
1 回复 分享
发布于 2020-07-31 09:42
虽然这个结果是对的 但是我感觉这个情况考虑的不对 如果竖着放 你还要考虑放在前面和后面这两种情况 虽然会有重复的 但是确实会多出来一种新的情况 那么对于n=4来说 实际最后计算应该是 4种(竖放)+1种(横放)而不应该是f(3)+f(2)=3种+2种
1 回复 分享
发布于 2020-11-17 19:44
f(n-2)的图有点问题吧
点赞 回复 分享
发布于 2020-02-29 22:58
图片很直观了,感谢
点赞 回复 分享
发布于 2020-04-24 14:57
请问这样不会超时吗
点赞 回复 分享
发布于 2020-06-23 09:33
懂了
点赞 回复 分享
发布于 2024-08-29 23:12 上海

相关推荐

01-21 12:26
暨南大学 golang
点赞 评论 收藏
分享
评论
63
3
分享

创作者周榜

更多
牛客网
牛客企业服务