07 2012 档案
摘要:跟定一个集合,让你求出它的所有可能的排列组合。这个问题是常见的组合问题,排列的总数目很简单:N!个。但是你能够利用算法将所有可能的排列全部求解出来吗?或者变一下,你能够求解出第x个排列吗?(注:你所有的排列是有序的,暗指是数字序列)。在组合数学教科书上有很多求这样问题的方法,我简单介绍一下其中的两种。第一种:假如给定的集合是ABC,那么我们可以先想一下最终的结果形式可以认为是所有以A开头,以B开头和以C开头的三种。那么继续下去以A开头的,后面还有BC,接下来的第二个字符是什么呢?同样道理,分为两种,以B开头的和以C开头的。那么结果就是ABC,ACB以B开头的,后面还有AC,接下来分为两种,分别
阅读全文
摘要:写一个程序求某一给定范围的素数(质数),我想这个问题对于大部分人来说都是很easy的事情。似乎在刚开始学程序设计的时候,谭浩强老师的那本C语言课本里就有相应的解法。以前的我只知道怎么去求解这个问题,但对于这个方法的来源不是很清楚。今天忽然间从一个题目(接下来要讲的亲和数问题)里得到了这个方法的名称,原来这是有名的埃拉托斯特尼筛法。 先对着维基百科讲解一下这个方法求解素数的基本原理:给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。步
阅读全文
摘要:函数调用另一个词语表示叫作 过程。一个过程调用包括将数据和控制从代码的一部分传递到另一部分。另外,它还必须在进入时为过程的局部变量分配空间,并在推出时释放这些空间。而数据传递,局部变量的分配和释放通过操纵程序栈来实现。在了解本文章之前,您需要先对程序的进程空间有所了解,即对进程如何使用内存?如果你知道这些,下面的内容将是很easy的事情了。为了您的回顾还是将简单的分布图贴出来,便于您的回顾。我们先来了解一个概念,栈帧(stack frame),机器用栈来传递过程参数,存储返回信息,保存寄存器用于以后恢复,以及本地存储。为单个过程(函数调用)分配的那部分栈称为栈帧。栈帧其实是两个指针寄存器,寄存
阅读全文
浙公网安备 33010602011771号