牛妹的数字

对于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;
    }
};
全部评论

相关推荐

刘友牛玥:你看,真测出来了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务