牛妹的数字
对于n=1来说,以1结尾、以0结尾个数都是1,总和是2,下面过度到n=2:
对于所有以1结尾的数,后面都可以加上0(10),而对于0结尾的数,后面即可以加1也可以加0(01,00);所以 n位不含相邻1的个数和n-1位的不含相邻1的个数有关系啊。
n位中以1结尾的个数其实等于由n-1位中以0结尾个数(0结尾后面加个1);
n位中以0结尾的个数其实等于由n-1位中的以1结尾个数+以0结尾个数;
class Solution { public: /** * * @param n int整型 * @return long长整型 */ long long calculate(int n) { // write code here long long a = 1, b = 2, c = 3; for (int i = 3; i <= n; i ++) { a = c; c += b; b = a; } return c; } };
这样写也挺好的
class Solution { public: /** * * @param n int整型 * @return long长整型 */ long long calculate(int n) { // write code here long long dp0 = 1, dp1 = 1; for (int i = 1; i < n; i++) { long long tmp = dp0; dp0 += dp1; dp1 = tmp; } return dp0+dp1; } };