问题说明: 双色,三色河内塔是由河内塔演变而来的一种算法。 public class Hanoi2Colors { public static void help() { System.out.println( "Usage: java Hanoi2Colors number_of_disks"); System.out.println( "\t number_of_disks: must be a even number."); System.exit ...
问题说明: 河內之塔(Towers of Hanoi)是法国人M.Claus(Lucas)於1883年从泰国带至法国的,河內为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及這个故事,据说创世紀时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),並命令僧侣将所有的金盘从第一根石棒移至第三根石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当盘子全数搬运完毕之时,此塔将损毁,而也就是世界末日來临之时。 import java.io.*; ...
问题说明: 假设一个背包的负重最大可达8公斤,而希望在背包内放置负重范围你价值最高的物品。 class Fruit { private String name; private int size; private int price; public Fruit(String name, int size, int price) { this.name = name; this.size = size; this.price = price; } publi ...
问题说明: 现在的一些高级程序语言对于字符串的处理支持越来越大,不过字符串搜寻本身仍是值得探讨的课题,在这里以Boyer Moore法来说明如何进行字符串说明,这个方法速度快且容易理解。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StringMatch { private int[] skip; private int p; private String str; ...
问题说明: 生命游戏,为1970年英国数学家J.H.Conway所提出,某一细胞的邻居包括上,下,左,右,左上,左下,右上与右下相邻的细胞,游戏规则如下: 1,孤单死亡:如果细胞的邻居小于一个,则该细胞在下一个状态死亡。 2,拥挤死亡:如果细胞的邻居在四个以上,则该细胞在下一个状态死亡。 3,稳定:如果细胞的邻居为两个或三个,则该细胞在下一个状态稳定。 4,复活:如果某位置原无细胞存活,而该位置的邻居为三个,则该位置将复活一个细胞。 import java.io.BufferedReader; import java.io.IOException; import ...
问题说明: 现在有八枚银币abcdefg,已知其中一枚是假币,其重量不同于真币,但不知道是轻还是重,如何用天平以最小的比较次数决定出那个是假币,并得知假币是比真币轻还是重。 public class Coins { private int[] coins; public Coins() { coins = new int[8]; for(int i = 0; i < 8; i++) coins[i] = 10; } public void ...
问题说明: 西洋棋中的皇后可以直线前进,吃掉遇到的所有棋子,如果棋盘上有八个皇后,则这八个皇后如何相安无事的放置在棋盘上? public class Queen { // 同位置是否有皇后,1表示有 private int[] column; // 右上至左下是否有皇后 private int[] rup; // 左上至右下是否有皇后 private int[] lup; // 解答 private int[] queen; // 解答编号 private ...
问题说明: 骑士游戏,在十八世纪倍受数学家与拼图迷的注意,骑士的走法为西洋棋的走发,骑士可以由任何一个位置出发,它要如何走完所有的位置。 public class Knight { public boolean travel(int startX, int startY, int[][] board) { // 对应骑士可以走的八个方向 int[] ktmove1 = {-2, -1, 1, 2, 2, 1, -1, -2}; int[] ktmove2 = {1, 2 ...
问题说明: 老鼠走迷宫是循环求解的基本类型,我们在二维数组中用2来表示迷宫的墙壁,使用1来表示老鼠的行走路径,并用程序求出从入口到出口的距离。 public class Mouse { private int startI, startJ; // 入口 private int endI, endJ; // 出口 private boolean success = false; public static void main(String[] args) { int[][] maze = {{2, ...
问题说明: 三色旗的问题最早由E.W.Dijkstra所提出,塔所使用的用语为Dutch Nation Flag(Dijkstra为荷兰人),而多数的作者则使用Three-Color Flag来说明。 假设有一条绳子,上面有红,白,蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序,您希望将之分类,并排列蓝,白,红的顺序,要如何移动次数才会最少,注意您只能在绳子上进行这个动作,而且一次只能调换两个旗子。 import java.io.*; public class ThreeColorsFlags { private void swap(char[] f ...
问题说明: 巴斯卡(Pascal)三角形基本上就是在解nCr ,因为三角形上的每一个数字各对应一个nCr ,其中n为row,而r为colnmu import java.awt.*; import javax.swing.*; public class Pascal extends JFrame { public Pascal() { setBackground(Color.white); setTitle("巴斯卡三角形"); setSize(520, 350); setDe ...
问题说明: Fibonacci为1200年代的欧洲数学家,在他的著作中曾经提到:若有一只兔子每个月生一只小兔子,一个月后小兔子也开始生产。起初只有一只兔子,一个月后就有两只兔子,两个月后有三只兔子,三个月后有五只兔子(小兔子投入生产)…… 这就是Fibonacci数列,一般习惯称之为费式数列,例如:1,1,2,3,5,8,13,21,34,55,89,…… public class Fibonacci { public static void main(String[] args) { int[] fib = new int[20]; ...
橡树心
搜索本博客
最近加入圈子
存档
最新评论