全部博文(43)
发布时间:2013-01-17 12:11:46
? ? ? ? ?问题描述:写一个程序,用字典顺序把一个集合的所有子集找出来。? ? ? ? ?此题的思路来自《C语言名题精选百则技巧篇》:字典顺序,也就是字符串比较时的顺序规则。可以采取这样的思路(以下是我根据书上的思路进行归纳再加上我自己的理解得来的步骤):&n.........【阅读全文】
发布时间:2013-01-03 20:27:09
问题描述:列出一个集合的所有子集,包括空子集合。 我的思路:回溯法的一种思路就是生成一颗子集树,而一个集合中的元素,要么存在于子集中,要么不存在,所以这又特殊化成一颗二叉树了。每当到达二叉树的底端时,就打印一次。很容易写出如下的代码:#include <stdio.h> #define MAX 1000 int n=3; //the number of the set elements int set[MAX]={1,2,3};&nb......【阅读全文】
发布时间:2013-01-02 21:07:29
问题描述:在做筛法求质数的问题时,在删除非质数的数据时,有很多是重复删除的。例如,如果有一个数是3x7x17x23,那么在删除3的倍数时会删除它,删除7,17与23的倍数时也都会删除它。请写一个程序,在删除非质数时"绝对"不做重复的工作。 思路:有一个因式分解定理:任何一个合数都可以分解成若干个质数相乘的形式。那么,num一定可以分解成p的i次方乘以q的形式(p,q是质数且p<q)。所以,需要去除的数就变成了p的2次方,p的3次方,p的4次方......以......【阅读全文】
发布时间:2012-12-30 22:11:59
问题描述:使用筛法求质数。有一个很神奇的筛子,可以给它一个数i,这个筛子有办法把i的所有倍数去掉。请用这个方法求出2到N之间的所有质数。要求,程序不能使用乘法和除法,只能用加或减,以求加快速度。 该问题的思路来自《C语言名题精选百则技巧篇》,很惭愧,我对这样的涉及一些数学知识的题很少有解决的办法,我需要在这一方面加强。 我把书中的思路归纳如下,并加上了我自己的一些想法。 ......【阅读全文】
发布时间:2012-12-29 21:40:32
昨天太忙,没有时间做一个题,先记着,明天来补。 问题描述很简单,就是求N之内的所有质数并且打印出来。 思路:求质数有很多方法,我这里用一种比较高效的方法。我一步一步地说明方法。 1.比如判断一个数num是否为质数,那么就用num去对"i(i从2开始)直到根号num"取模,如果都不能整除就说明num是质数。 2.但是这样会有很多次多余的计算。从1到N,有很多数是......【阅读全文】