#软件开发笔面经#
选择题:一半靠蒙(ps:为什么每次都要考kmp啊,这次下来一定要研究下了)
算法题:
1. 记忆化dfs搜索
2. 每个位置被计算的次数分别为1*n | 2*(n-1) | 3 *(n-2) | ....| n*1;将次数倒排,数字正排,算对应位置的乘积和即可
3. 先将每个a放入hashmap,然后遍历a数组,递归看看g(a_i)是否在hashmap中统计数目,同时记忆化已经计算过的a_i避免重复递归;关键在于如何求g(x),找到x第一个1后面的第一个0的位置pos以及这个0后面的1的数目num,g(x) = ((x >> pos)<<pos) + (1 << pos) + (1 << (num - 1)) - 1;