The Beauty of Programming
文章平均质量分 78
huntzw
这个作者很懒,什么都没留下…
展开
-
BOP - NIM游戏分析之一
今日,和朋友们讨论这个话题。书中最后给出的结论是异或(XOR)运算符的使用,当XOR(M1, M2, …, Mn) != 0时候,我们只需要改变一个Mi的值,就可以让XOR(M1, M2, …Mi, …, Mn) = 0.这样就达到一个安全局面。 现在的问题是如何从M1, M2, …, Mn中选出这个需要改变的Mi? 首先,我们很容易分析得知,这个Mi不是唯一的。我们如何快速找到这原创 2012-02-10 21:40:06 · 472 阅读 · 0 评论 -
BOP - 计算32位整型数中的1的个数
一、HAKMEM算法分析 1、整型数 i 的数值,实际上就是各位乘以权重——也就是一个以2为底的多项式: i = A0*2^0+A1*2^1+A2*2^2+... 因此,要求1的位数,实际上只要将各位消权: A0+A1+A2+... 即系数和就是'1'的个数。 2、定理:对任何自然数n的N次幂,用n-1取模得数为1。 证明: 若 n^(k-1) % (n转载 2012-02-03 17:03:30 · 922 阅读 · 0 评论 -
BOP - 寻找发贴‘水王’
寻找发贴‘水王’中扩展题为: 随着Tango的发展,管理员发现,“超级水王”没有了。统计结果表明,有3个发帖很多的ID,他们的发帖数目都超过了帖子总数目N的1/4。你能从发帖ID列表中快速找出他们的ID吗? 解答:这道题显然还是用原题中的思路去解决,但问题复杂了,由原来的一个水王,变成了3个: 首先,我们需要3个变量来记录当前遍历过的3个不同的ID,number1,num原创 2012-02-13 18:13:59 · 5890 阅读 · 0 评论 -
BOP - 1的数目
文章后面的扩展问题: 对于二进制,统计1的数目。 f(1) = 1 f(10) = 10 f(11) = 100 … What is f(n)? Analysis: by different bit n (binary) f(n) (decimal sum by column)原创 2013-05-21 15:22:11 · 772 阅读 · 0 评论 -
字符串的全排列和全组合
字符串的全排列。。。 打印字符串的所有排列。例如,若输入为abc,则打印出acb、bac、cba、cab、bca、abc。。。。 void AllPermutate(char a[], int num,int first) { if(first == (num-1) ) { copy(a, a + num,ostream_iterator原创 2011-12-30 00:02:52 · 1702 阅读 · 0 评论