LintCode(easy)111.爬楼梯(bug集)
2016-07-21 16:30
267 查看
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就必须舍弃,然而我的算法并没有排除掉这种情况,这样一来这种算法显得过于麻烦,我可能考虑舍弃它。
原因:完全没考虑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就必须舍弃,然而我的算法并没有排除掉这种情况,这样一来这种算法显得过于麻烦,我可能考虑舍弃它。
相关文章推荐
- 集训 Poj 3669 BFS
- react native手动 npm init
- 使用CSS3画出一个叮当猫!超可爱!
- ZZULIOJ 1731: 矩阵 《用容斥求矩阵的和》
- TCP连接的建立和释放(三次握手和四次握手)
- VS2015使用Sublime Text 主题
- <meta http-equiv="X-UA-Compatible" content="IE=edge">的说明
- Lucky String
- Spring和MyBatis环境整合
- Spring JMS ActiveMQ整合(转)
- xampp中修改mysql默认空密码(root密码)的方法分享
- Hadoop-2.4.1学习之如何确定Mapper数量
- 详解SQL四种语言:DDL DML DCL TCL
- Linux内核协议栈IP报文的上送转发及下发
- SDWebimage加载图片
- 多态的理解
- Hibernate中,One2One映射关系的XML实现方式
- iOS_Pch文件的使用
- 简单的加密解密技术
- 临界区(Critical section)与互斥体(Mutex)的区别