LintCode(easy)111.爬楼梯(bug集)
来源:互联网 发布:数据库应用有什么用 编辑:程序博客网 时间:2024/05/16 19:32
bug1:
原因:完全没考虑n可能为奇数,以及n=1的情况。
bug2(bug1的进阶):
原因:对n==2,规律同样不适用。
bug3(bug2进阶):
原因:此时我终于发现我的思路上的bug了,我的原意是算出跨的次数最多和最少的值,然后所有可能性都在这两者中间,所以w=n-n/2+2;(n为偶数情况下)。但是我忽略了当跨的次数相同时,跨法有很多种,比如2-2-1,1-2-2,2-1-2。
之后,我换了一种思路:以n==5为例,
次数最多:5个1
次数最少:2个2和1个1
所以我想从5个1到3个1,再到1个1,逐层挑选两个1,组合成2。
bug4:
原因:c++里2乘以i,不能直接写成2i,而是要写成2*i;
bug5:
原因:
1.有一部分重复了。,就我代码而言,我没有排除掉在之前已经变成2的数了,这些2在我的代码里会被当成1,进行下一次逐层合并。
2.w一开始不应该为pow(2,….), w应该==0;
3.两个1是相邻的
bug6:
原因:在逐层合并时,两个1的内部顺序不重要,所以应该相关代码应该除2,改动处见bug7.
bug7:
原因:
1.依旧没有注意到“两个1必须是相邻的”
2.有重复,比如:a,b,c,d,e(均为1), 我的算法是(2*5-2)/2,这种算法是基于我这种思路:以b为核心,有(a,b)和(b,c)两种可能,以c为核心,有(b,c)和(c,d)两种可能,此时(b,c)重复了(注意与bug6的原因不同)。
3.同时我还意识到我这种思路的不足,由于“两个1必须是相邻的”,所以在合并的过程中,如果出现:2-1-2-1-1. 则两个2之间的1就必须舍弃,然而我的算法并没有排除掉这种情况,这样一来这种算法显得过于麻烦,我可能考虑舍弃它。
- LintCode(easy)111.爬楼梯(bug集)
- LintCode | Easy | 爬楼梯 | Climbing Stairs
- LintCode | 111. 爬楼梯
- Lintcode 111.爬楼梯
- Lintcode 111. 爬楼梯
- LintCode(easy)字符串查找(bug集)
- 爬楼梯(LintCode Climbing Stairs)
- LintCode-爬楼梯
- 爬楼梯-lintcode
- LintCode之爬楼梯
- lintcode爬楼梯
- LintCode 爬楼梯[转载]
- 爬楼梯-LintCode
- Lintcode爬楼梯
- [Lintcode] #111 爬楼梯
- 爬楼梯-LintCode
- LintCode 爬楼梯
- LintCode Climbing Stairs 爬楼梯
- UIWebView 后台播放音乐
- XEN - Installing and Configuring Fedora Xen Virtualization
- 能够提高开发效率的Eclipse实用操作
- react native手动 npm init
- 集训 Poj 3669 BFS
- LintCode(easy)111.爬楼梯(bug集)
- Linux IO实时监控iostat命令详解
- 走遍亚洲 —— 东南亚
- 迅游网游加速器2016 绿色版
- AndFix(续) - MultiDex
- 只读事务(@Transactional(readOnly = true))的一些概念
- 项目实战--svn讲解
- mysql列与注释修改SQL语句
- BIO | NIO | AIO释疑