随笔分类 -  编程之美

摘要:问题1.给定一个整数N,那么N的阶乘N!末尾有多少个0.问题2:求N!中二进制最低位位1的位置;java实现:package 经典;public class 阶乘 { /** * @param args */ public static void main(String[... 阅读全文
posted @ 2014-10-06 17:48 凡尘里的一根葱 阅读(170) 评论(0) 推荐(0)
摘要:理论:java实现:package 经典;public class 寻找发帖水王 { /** * @param args */ public static void main(String[] args) { // TODO 自动生成的方法存根 ... 阅读全文
posted @ 2014-10-06 17:36 凡尘里的一根葱 阅读(131) 评论(0) 推荐(0)
摘要:理论:现将举行一个餐会,让访客事先填写到达时间与离开时间,為了掌握座位的数目,必须先估计不同时间的最大访客数。解法:这个题目看似有些复杂,其实相当简单,单就计算访客数这个目的,同时考虑同一访客的来访时间与离开时间,反而会使程式变得复杂;只要将来访时间与离开时间分开处理就可以了,假设访客 i 的来访时... 阅读全文
posted @ 2014-10-06 17:14 凡尘里的一根葱 阅读(336) 评论(0) 推荐(0)
摘要:理论:假设有5个元素的集点,取出3个元素的可能子集如下:{1 2 3}、{1 2 4 }、{1 2 5}、{1 3 4}、{1 3 5}、{1 4 5}、{2 3 4}、{2 3 5}、{2 4 5}、{3 4 5}这些子集已经使用字典顺序排列,如此才可以观察出一些规则:如果最右一个元素小於m,则如... 阅读全文
posted @ 2014-10-06 16:58 凡尘里的一根葱 阅读(564) 评论(0) 推荐(0)
摘要:理论:洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1∼N)打乱重新排列,只不过洗扑克牌多了一个花色判断的动作而已。解法;初学者通常会直接想到,随机產生1∼N的乱数并将之存入阵列中,后来產生的乱数存入阵列前必须先检查阵列中是否已有重复的数字,如果有这个数就不存入,再重新產生下一个数,运气... 阅读全文
posted @ 2014-10-06 16:46 凡尘里的一根葱 阅读(407) 评论(0) 推荐(0)
摘要:理论:给定一组数字或符号,產生所有可能的集合(包括空集合),例如给定1 2 3,则可能的集合為:{}、{1}、{1,2}、{1,2,3}、{1,3}、{2}、{2,3}、{3}。解法;如果不考虑字典顺序,则有个简单的方法可以產生所有的集合,思考二进位数字加法,并注意1出现的位置,如果每个位置都对应一... 阅读全文
posted @ 2014-10-06 16:41 凡尘里的一根葱 阅读(237) 评论(0) 推荐(0)
摘要:理论:將一組數字、字母或符號進行排列,以得到不同的組合順序,例如1 2 3這三個數的排列組合有:1 2 3、1 3 2、2 1 3、2 3 1、3 1 2、3 2 1。解法:可以使用递迴将问题切割為较小的单元进行排列组合,例如1 2 3 4的排列可以分為1 [2 3 4]、2 [1 3 4]、3 [... 阅读全文
posted @ 2014-10-06 16:28 凡尘里的一根葱 阅读(305) 评论(0) 推荐(0)
摘要:在一个2^k * 2^k个方格组成的棋盘中,有一个方格与其它的不同,若使用以下四种L型骨牌覆盖除这个特殊方格的其它方格,如何覆盖。四各L型骨牌如下图1 图1棋盘中的特殊方格如图2图2实现的基本原理是将2^k * 2^k的棋盘分成四块2^(k - 1) * 2^(k - 1)的子棋盘,特殊方格一定在其... 阅读全文
posted @ 2014-10-06 00:09 凡尘里的一根葱 阅读(377) 评论(0) 推荐(0)
摘要:理论;生命游戏(game of life)為1970年由英国数学家J. H. Conway所提出,某一细胞的邻居包括上、下、左、右、左上、左下、右上与右下相邻之细胞,游戏规则如下:孤单死亡:如果细胞的邻居小於一个,则该细胞在下一次状态将死亡。拥挤死亡:如果细胞的邻居在四个以上,则该细胞在下一次状态将... 阅读全文
posted @ 2014-10-05 12:21 凡尘里的一根葱 阅读(453) 评论(0) 推荐(0)
摘要:理论:13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。java实现;package 经典;public class KickOutBadGuys { private static final int M... 阅读全文
posted @ 2014-10-05 12:18 凡尘里的一根葱 阅读(137) 评论(0) 推荐(0)
摘要:理论:现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同於真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重解法单就求假币的问题是不难,但问题限制使用最少的比较次数,所以我们不能以单纯的迴圈比较来求解,我们可以使用决策树(de... 阅读全文
posted @ 2014-10-05 11:37 凡尘里的一根葱 阅读(642) 评论(0) 推荐(0)
摘要:理论:解法(回溯法);老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是递回的基本题。java实现:package 经典;public class 老鼠走迷官1 { pu... 阅读全文
posted @ 2014-10-05 10:25 凡尘里的一根葱 阅读(689) 评论(0) 推荐(0)
摘要:理论:骑士游历问题是放在8×8的国际象棋棋盘上的一个马,按照马走"日"字的规则是否能够不重复地走遍棋盘的每个格。解答:简单的说,先将最难的位置走完,接下来的路就宽广了,骑士所要走的下一步,「为下一步再选择时,所能走的步数最少 的一步。」,使用这个方法,在不使用递归的情况下,可以有较高的机率找出走法(... 阅读全文
posted @ 2014-10-05 10:17 凡尘里的一根葱 阅读(897) 评论(0) 推荐(0)
摘要:理论;在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。解法(回溯法):java解法;package 经典;public class EightQueen2{ public static final int MAX=8; ... 阅读全文
posted @ 2014-10-05 09:33 凡尘里的一根葱 阅读(215) 评论(0) 推荐(0)
摘要:java实现package 经典;import java.math.BigInteger;import java.util.regex.Matcher;import java.util.regex.Pattern;public class BigIntegerAddition { /** ... 阅读全文
posted @ 2014-10-05 09:23 凡尘里的一根葱 阅读(472) 评论(0) 推荐(0)
摘要:理论;河内塔:1.有三根杆子A,B,C。A杆上有若干碟子2.每次移动一块碟子,小的只能叠在大的上面3.把所有碟子从A杆全部移到C杆上讲解:设A上有n个盘子。如果n=1,则将圆盘从A直接移动到C。如果n=2,则:1.将A上的n-1(等于1)个圆盘移到B上;2.再将A上的一个圆盘移到C上;3.最后将B上... 阅读全文
posted @ 2014-10-05 09:19 凡尘里的一根葱 阅读(837) 评论(0) 推荐(0)