java经典算法系列IT168文库Word文件下载.docx
- 文档编号:16063587
- 上传时间:2022-11-18
- 格式:DOCX
- 页数:35
- 大小:28.05KB
java经典算法系列IT168文库Word文件下载.docx
《java经典算法系列IT168文库Word文件下载.docx》由会员分享,可在线阅读,更多相关《java经典算法系列IT168文库Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
生命游戏
9:
字符串核对
10:
双色,三色河内塔
11:
背包问题
12:
河内塔
费式数列(Fibonacci)
问题说明:
Fibonacci为1200年代的欧洲数学家,在他的著作中曾经提到:
若有一只兔子每个月生一只小兔子,一个月后小兔子也开始生产。
起初只有一只兔子,一个月后就有两只兔子,两个月后有三只兔子,三个月后有五只兔子(小兔子投入生产)……
这就是Fibonacci数列,一般习惯称之为费式数列,例如:
1,1,2,3,5,8,13,21,34,55,89,……
算法代码(Java):
1.publicclassFibonacci{
2.
publicstaticvoidmain(String[]args){
3.
int[]fib=newint[20];
4.
5.
fib[0]=0;
6.
fib[1]=1;
7.
8.
for(inti=2;
i<
fib.length;
i++)
9.
fib[i]=fib[i-1]+fib[i-2];
10.
11.
for(inti=0;
12.
System.out.print(fib[i]+"
"
);
13.
System.out.println();
14.
}
15.}
巴斯卡三角形(Pascal)
巴斯卡(Pascal)三角形基本上就是在解nCr
,因为三角形上的每一个数字各对应一个nCr
,其中n为row,而r为colnmu,
1.
2.importjava.awt.*;
3.importjavax.swing.*;
5.publicclassPascalextendsJFrame{
publicPascal(){
7.
setBackground(Color.white);
setTitle("
巴斯卡三角形"
setSize(520,350);
10.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
show();
}
13.
privatelongcombi(intn,intr){
15.
inti;
16.
longp=1;
17.
18.
for(i=1;
=r;
19.
p=p*(n-i+1)/i;
20.
21.
returnp;
22.
23.
24.
publicvoidpaint(Graphicsg){
25.
finalintN=12;
26.
intn,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.
publicstaticvoidmain(Stringargs[]){
36.
Pascalfrm=newPascal();
37.
38.}
三色旗(ThreeColorFlags)
三色旗的问题最早由E.W.Dijkstra所提出,塔所使用的用语为DutchNationFlag(Dijkstra为荷兰人),而多数的作者则使用Three-ColorFlag来说明。
假设有一条绳子,上面有红,白,蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序,您希望将之分类,并排列蓝,白,红的顺序,要如何移动次数才会最少,注意您只能在绳子上进行这个动作,而且一次只能调换两个旗子。
算法代码(Java):
1.importjava.io.*;
2.
3.publicclassThreeColorsFlags{
4.
privatevoidswap(char[]flags,intx,inty){
chartemp;
temp=flags[x];
flags[x]=flags[y];
flags[y]=temp;
publicStringmove(char[]flags){
intwFlag=0;
intbFlag=0;
intrFlag=flags.length-1;
while(wFlag<
=rFlag){
17.
if(flags[wFlag]=='
W'
){
wFlag++;
}
elseif(flags[wFlag]=='
B'
swap(flags,bFlag,wFlag);
bFlag++;
23.
else{
while(wFlag<
rFlag&
&
flags[rFlag]=='
R'
)
27.
rFlag--;
swap(flags,rFlag,wFlag);
rFlag--;
returnnewString(flags);
34.
publicstaticvoidmain(String[]args)
throwsIOException{
38.
BufferedReaderbuf;
39.
buf=newBufferedReader(
40.
newInputStreamReader(System.in));
41.
42.
System.out.print("
输入三色旗顺序(ex.RWBBWRWR):
"
43.
Stringflags=buf.readLine();
44.
45.
ThreeColorsFlagsthreeColorsFlag=newThreeColorsFlags();
46.
flags=threeColorsFlag.move(
47.
flags.toUpperCase().toCharArray());
48.
49.
System.out.println("
移动顺序后:
+flags);
50.
51.}
老鼠走迷宫(Mouse)
老鼠走迷宫是循环求解的基本类型,我们在二维数组中用2来表示迷宫的墙壁,使用1来表示老鼠的行走路径,并用程序求出从入口到出口的距离。
1.publicclassMouse{
privateintstartI,startJ;
//入口
privateintendI,endJ;
//出口
privatebooleansuccess=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(intj=0;
j<
maze[0].length;
j++)
if(maze[j]==2)
█"
else
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 经典 算法 系列 IT168 文库