牛妹的数字
对于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;
}
};
