代码改变世界

树型动态规划(树形dp)

2013-09-07 17:34 by youxin, 1171 阅读, 0 推荐, 收藏,
摘要:树型动态规划就是在“树”的数据结构上的动态规划,树型动态规划是建立在树上的,所以有二个方向: 1.根—>叶:这种题目基本上碰不到 2.叶->根:根的子节点传递有用的信息给根,完后根得出最优解的过程。这种的题目是树型动态规划的最常见类型。 首先定义 无根树:题目中可以以任意节点为根建树,经过动态规划后即可直接得到最优值。 有根树:必须以某一个节点为根建树才能通过动态规划后得到最优值。基本上有这样一个步骤:一、有根树: 1.建树(一般以递归方式实现,有时数据过大以BFS方式实现) 2.在建树中找到叶子的时候特别赋值。 3.回溯时通过方程确定出每... 阅读全文

打印自身的程序(自输出程序)

2013-09-07 17:34 by youxin, 4594 阅读, 0 推荐, 收藏,
摘要:这篇文章发表于2004年第《CSDN开发高手》第5期。本来是投稿给《程序员》杂志的,但是给“调剂”到《CSDN开发高手》上去了,是一大遗憾。《CSDN开发高手》目前已经停刊。另外,“打印自身的程序”有一个很简洁的C语言解答,虽然核心思想是类似的,但是实现技巧很玄妙,不象文章中的程序可以很自然地一步一步推导出来,因此没有写进去。这个程序是:#include int main() { char *s = "#include %cint main() { char *s = %c%s%c; printf( s, 10, 34, s, 34 ); return 0; }"; pri 阅读全文

趣题:阿米巴的生存

2013-09-07 08:20 by youxin, 819 阅读, 0 推荐, 收藏,
摘要:在每一代的繁殖中,单个的阿米巴原虫有3/4的概率分裂成两个,有1/4的概率死亡(而不产生下一代)。初始时只有一个阿米巴原虫,求阿米巴原虫会无限繁殖下去的概率。答案在下面。解答:令p为单个阿米巴原虫分裂的概率(题目中等于3/4),令P为我们要求的概率(无限繁殖的概率)。初始时的那个阿米巴原虫有p的概率分裂为两个,至少有一个可以无限生存下去的概率为1-(1-P)^2。那么,我们得到式子:P = p*( 1 - (1-P)^2 )化简后得到:p*P^2 + (1 - 2p)P = 0或者写成:P * ( pP + ( 1-2p ) ) = 0由于P≠0,因此pP+(1-2p) = 0,即P = (2 阅读全文

转:趣题:经典二分问题的一个扩展

2013-09-07 08:14 by youxin, 338 阅读, 0 推荐, 收藏,
摘要:SETI@home可以在杂乱的射电数据中搜寻独特的讯号,你能在大街上的嘈杂声中清晰分辨出一个尖细的女声大叫“亚美蝶”。这些现象都表明,有时对集合里的所有元素进行整体考察可以很快找出我们所要找的个体。去年我们搞合唱比赛时,我又想到了一个绝佳的例子:你可以在合唱声中清楚地听到是否有人跑调。考虑这样一个问题,假如合唱团里有一个人唱歌始终走调,但我听不出来是谁走调,只能听出当前正在唱歌的人中是否有唱走调了的人。那么,我如何才能迅速地揪出那个唱走调的人?利用经典二分法,我们可以在log2(n)次合唱后找出唱走调了的人。每一次,我都把剩下的人平均分成两组,然后选其中一组来合唱:如果听不到走调的声音,这一. 阅读全文

后缀数组

2013-09-07 07:47 by youxin, 278 阅读, 0 推荐, 收藏,
摘要:http://tieba.baidu.com/f?kz=754580296http://www.cnblogs.com/staginner/archive/2012/02/02/2335600.htmlhttp://www.cnblogs.com/staginner/archive/2012/02/02/2335600.htmlhttp://blog.csdn.net/hackbuteer1/article/details/7968623?reloadhttp://www.nocow.cn/index.php/%E5%90%8E%E7%BC%80%E6%95%B0%E7%BB%http://b 阅读全文

玩扑克牌学概率论

2013-09-07 04:38 by youxin, 4163 阅读, 1 推荐, 收藏,
摘要:概率论和数理统计研究的是不确定事件的发生几率问题。从十几年前开始学习概率论到现在,说实在我学得并不够好,虽然大概的东西掌握了,但是重点和难点还是没有完全掌握,最近又在学习。不过我觉得我的概率论和数理统计之所以没有学好,经过这么多年才能理解其中大多数内容与我们的许多老师教学有很大关系。所以,我今天就从玩扑克牌的例子就概率论的基本理论和大家交流,努力使这个学问变得有趣一点。在玩扑克牌中有一种玩法我觉得很有规律性,也非常适合应用概率论来估算,这种玩法叫“扎金花”或者叫“开拖拉机”,就是给玩牌的人每人发三张扑克牌,然后每个人根据自己的牌大小在互相不知道大小的情况下下注,最后大者或者胆大者获胜。牌的大小 阅读全文

程序员面试题精选100题(40)-扑克牌的顺子

2013-09-07 01:43 by youxin, 936 阅读, 0 推荐, 收藏,
摘要:题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。分析:这题目很有意思,是一个典型的寓教于乐的题目。我们需要把扑克牌的背景抽象成计算机语言。不难想象,我们可以把5张牌看成由5个数字组成的数组。大小王是特殊的数字,我们不妨把它们都当成0,这样和其他扑克牌代表的数字就不重复了。接下来我们来分析怎样判断5个数字是不是连续的。最直观的是,我们把数组排序。但值得注意的是,由于0可以当成任意数字,我们可以用0去补满数组中的空缺。也就是排序之后的数组不是连续的,即相邻的两个数字相隔若干个数字,但如果. 阅读全文

关于栈和队列的题目总结

2013-09-07 01:08 by youxin, 1115 阅读, 0 推荐, 收藏,
摘要:1.题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。这是google的面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将是最小元素。但由于不能保证最后push进栈的元素最先出栈,这种思路设计的数据结构已经不是一个栈了。在栈里添加一个成员变量存放最小元素(或最小元素的位置)。每次push一个新元素进栈的时候,如果该元素比当前的最小元素还要小,则更新最小元素。乍一看这样思路挺好的。但仔细一想,该思路存在一个重要的问题:如果当前最小元素被pop出去,如何才能得到下一个 阅读全文

float 浮点数与零值0比较大小

2013-09-06 20:29 by youxin, 50874 阅读, 3 推荐, 收藏,
摘要:float x;千万不要写x==0;写出float x 与“零值”比较的if语句——一道面试题分析写出float x 与“零值”比较的if语句请写出 floatx 与“零值”比较的 if 语句:const float EPSINON = 0.00001;if ((x >= - EPSINON) && (x =”或“=”或“=-EPSINON) && (x#include main(){ float d1, d2, d3, d4; d1 = 194268.02; d2 = 194268; d4 = 0.02; d3 = d1 - d2; if (d3 > 阅读全文

如何定义和实现一个类的成员函数为回调函数

2013-09-06 19:39 by youxin, 1475 阅读, 0 推荐, 收藏,
摘要:回调函数,就是由你自己写的,你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可以在回调函数里完成你要做的事。 B.如何定义和实现一个类的成员函数为回调函数 要定义和实现一个类的成员函数为回调函数需要做三件事: a.声明; b.定义; c.设置触发条件,就是在你的函数中把你的回调函数名作为一个参数,以便系统调用 如: 声明回调函数类型 typedef void (*FunPtr)(void); 定义回调函数 class A { public: static void callBackFun... 阅读全文
上一页 1 ··· 129 130 131 132 133 134 135 136 137 ··· 269 下一页