1、生命游戏9:字符串核对10:双色,三色河内塔11:背包问题12:河内塔费式数列(Fibonacci)问题说明: Fibonacci为1200年代的欧洲数学家,在他的著作中曾经提到:若有一只兔子每个月生一只小兔子,一个月后小兔子也开始生产。起初只有一只兔子,一个月后就有两只兔子,两个月后有三只兔子,三个月后有五只兔子(小兔子投入生产) 这就是Fibonacci数列,一般习惯称之为费式数列,例如:1,1,2,3,5,8,13,21,34,55,89,算法代码(Java):1. public class Fibonacci 2. public static void main(String args
2、) 3. int fib = new int20;4. 5. fib0 = 0;6. fib1 = 1;7. 8. for(int i = 2; i fib.length; i+)9. fibi = fibi-1 + fibi-2;10. 11. for(int i = 0;12. System.out.print(fibi + );13. System.out.println();14. 15. 巴斯卡三角形(Pascal)巴斯卡(Pascal)三角形基本上就是在解nCr,因为三角形上的每一个数字各对应一个nCr,其中n为row,而r为colnmu,1. 2. import java.awt
3、.*;3. import javax.swing.*;5. public class Pascal extends JFrame public Pascal() 7. setBackground(Color.white);setTitle(巴斯卡三角形setSize(520, 350);10. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);show(); 13. private long combi(int n, int r)15. int i;16. long p = 1;17. 18. for(i = 1;= r;19. p = p * (n
4、-i+1) / i;20. 21. return p;22. 23. 24. public void paint(Graphics g) 25. final int N = 12;26. int n, r, t;27. 28. for(n = 0; n = N; n+) 29. for(r = 0; r = n; r+)30. g.drawString( + combi(n, r),31. (N-n)*20 + r * 40, n * 20 + 50);32. 33. 34. 35. public static void main(String args) 36. Pascal frm = n
5、ew Pascal();37. 38. 三色旗(ThreeColorFlags)三色旗的问题最早由E.W.Dijkstra所提出,塔所使用的用语为Dutch Nation Flag(Dijkstra为荷兰人),而多数的作者则使用Three-Color Flag来说明。假设有一条绳子,上面有红,白,蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序,您希望将之分类,并排列蓝,白,红的顺序,要如何移动次数才会最少,注意您只能在绳子上进行这个动作,而且一次只能调换两个旗子。算法代码(Java):1. import java.io.*;2. 3. public class ThreeColorsFlag
6、s 4. private void swap(char flags, int x, int y) char temp;temp = flagsx;flagsx = flagsy;flagsy = temp; public String move(char flags) int wFlag = 0;int bFlag = 0;int rFlag = flags.length - 1;while(wFlag = rFlag) 17. if(flagswFlag = W) wFlag+;else if(flagswFlag = B swap(flags, bFlag, wFlag); bFlag+;
7、23. else while(wFlag rFlag & flagsrFlag = R)27. rFlag-; swap(flags, rFlag, wFlag); rFlag-;return new String(flags);34. public static void main(String args)throws IOException 38. BufferedReader buf;39. buf = new BufferedReader(40. new InputStreamReader(System.in);41. 42. System.out.print(输入三色旗顺序(ex.
8、RWBBWRWR):43. String flags = buf.readLine();44. 45. ThreeColorsFlags threeColorsFlag = new ThreeColorsFlags();46. flags = threeColorsFlag.move(47. flags.toUpperCase().toCharArray();48. 49. System.out.println(移动顺序后: + flags);50. 51. 老鼠走迷宫(Mouse)老鼠走迷宫是循环求解的基本类型,我们在二维数组中用2来表示迷宫的墙壁,使用1来表示老鼠的行走路径,并用程序求出从
9、入口到出口的距离。1. public class Mouse private int startI, startJ;/ 入口 private int endI, endJ;/ 出口 private boolean success = false;int maze = 2, 2, 2, 2, 2, 2, 2,2, 0, 0, 0, 0, 0, 2,2, 0, 2, 0, 2, 0, 2,2, 0, 0, 2, 0, 2, 2,2, 2, 0, 2, 0, 2, 2,2, 2, 2, 2, 2, 2, 2;显示迷宫: maze.length; i+) for(int j = 0; j maze0.length; j+) if(mazej = 2) else