/* 三色汉诺塔 */ #include <stdio.h> void hanoi(int disks, char source, char temp, char target) { if(disks == …
分类:经典算法问题
【背包问题】
/* 背包问题 说明: 假设有一个背包的负重最多可达八公斤,而希望在背包中装入负重的范围内可得之总价物品,假设是水果好了,水果的编号,单价与重量如下所 示: 0 李子 4kg NT$4500 1 苹果 5kg NT$57…
【蒙地卡罗法求PI】
/* 蒙地卡罗法求PI 说明 蒙地卡罗为摩洛哥王国之首都,该国位于法国与义大利国境,以赌博闻名。蒙地卡罗的基本原理为以乱数配合面积公式来进行解题,这种以机 率来解题的方式带有赌博的意味,虽然在精确度上有所疑虑,但其解题的…
【筛选求质数】
/* 筛选求质数 说明: 除了自身之外,无法被其他整数整除的数称之为质数,要求质数很简单,但如何快速的求出质数则一直是程式设计人员与数学家 努力的课题,在这边介绍一个著名的Eratosthenes求质数的方法。 解法: …
【长 PI】
/* 长 PI 说明: 圆周率后的小数位数是无止境的,如何使用电脑来计算这无止境的小数是一些数学家与程式设计师所感兴趣的,在这边介绍一个公式配合 大 数运算,可以计算指定位数的圆周率。 解法 : 首先介绍J.Marchi…
【最大公因数,最小公倍数,因式分解】
/* 最大公因数,最小公倍数 by c 说明: 最大公因数使用辗转相除法来求,最小公倍数则由这个公式来求: GCD * LCM = 两数乘积 解法: 最大公因数可以使用递回与非递回求解,因式分解基本上就是使…
【完美数 】
/* 完美数 说明: 如果有一数n ,其真因数 (Proper factor ) 的总和等于n , 则称之为完美数(Perfect Number ),例如以下几个数都是完美数: 6 = 1 + 2 + 3 28 = 1 …
【阿姆斯壮数 】
/* 阿姆斯壮数 说明: 在三位的整数中,例如153可以满足1^3 + 5^3 + 3^3 = 153,这样的数称之为Armstrong数,试写出一程式找出所有的三位数Armstrong数。 解法: Armstrong数…
【中序式转后序式】
/* 中序式转后序式 说明: 平常所使用的运算式,主要是将运算元放在运算子的两旁,例如a+b/d这样的式子,这称之为中序(Infix)表示式,对于人类来说,这样的式子很 容易理 解,但由于电脑执行指令时是有顺序的,遇到中…
【后序式的运算】
/* 后序式的运算 说明: 将中序式转换为后序式的好处是,不用处理运算子先后顺序问题,只要依序由运算式由前往后读取即可。 解法: 运算时由后序式的前方开始读取,遇到运算元先存入堆叠,如果遇到运算子,则由堆叠中取出两个运算…
【最大访客数】
/* 最大访客数 说明: 现将举行一个餐会,让访客事先填写到达时间与离开时间,为了掌握座位的数目,必须先估计不同时间的最大访客数 解法: 这个题目看似有些复杂,其实相当简单,单就计算访客数这个目的,同时考虑同一访客的来访…
【洗扑克牌(乱数排列)】
/* 洗扑克牌。。。乱数排列 说明: 洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1~N)打乱重新排列,只不过洗扑克牌多了一个花色判断的动作 而已。 解法: 初学者通常会直接想到,随机产生1~N的乱数并将之…