如何计算某个数x是否是2的幂次方?
因为若y为2的幂,则为x=2^y。在2进制位的表示中在第y+1位上为1,其余为0.则(x-1)&x=0。即可以得出x是否为2的幂次方。
百鸡问题:若公鸡价钱为5,母鸡价钱为3,小鸡价钱为1/3,则100元买100只鸡,问分别为多少?
通常得出两组等式: (1) 5x+3y+1/3z=100 (2) x+y+z=100
解法:由于x、y、z均为正整数,则可用(1)(2)等式销去z项得 (3) 14x+8y=200 => (4) (7/4)x+y=25。 x的取值集{0、4、8、12}。则可通过枚举法得出x,y,z各为多少。
求和问题:对下列等式求和?
(1) i为外层循环,j为内层循环, 循环次数为20*4+1 = 81
(2) j为外层循环,i为内层循环, 循环次数为3*21+1 = 64
明显第二次要计算效率最高。
如何不用sizeof等函数,如何求int型的大小?
声明一个int数组,然后用 (&a[n]-a)/n-1
如何在一个8*8的矩阵中,采用象棋中的马走日字的形式遍历整个矩阵,但是不能走重复格子。找出可行解即可。
思路:采用深度优先算法,但是加入相关扩展的限制条件。每一次判断下一步格子时,按照以下原则:
1.若当前还没有到达的节点中能够跳到下一个可到达节点的个数越多,说明优先级越低。按照优先级排序后,选取优先级最低的节点作为下一步到达的节点。