这两种算法如何理解
int lowbit(int x)
{
return x&(-x);
}
int lowbit(int x)
{
return x&(x^(x-1));
}
参考GPT回答:
1、使用按位与运算符(&)和取反运算符(-)来计算lowbit
2、使用按位与运算符(&)和异或运算符(^)来计算lowbit
嗯,之所以花时间来总结这个题,就是因为很多DP的题其实本质就是个爬楼梯问题,或者说本质就是斐波那契数列问题。那么只要我们了解了这个方法论之后,那么在遇到类似的题目就可以见招拆招,万变不离其宗啦。
举个?:
有一对兔子,每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
贡献于第n个月的兔子数量的是f(n - 1) + f(n - 3)
递推公式是 f(n) = f(n - 1) + f(n - 3)
那么三阶递推公式就可以试试用三阶递推矩阵表示了,其余的步骤就大同小异啦。