欢迎来到天天文库
浏览记录
ID:15285774
大小:99.50 KB
页数:4页
时间:2018-08-02
《八皇后问题算法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、流程图八皇后问题算法分析在这个问题中首先定义的是一个用于构造界面的二位数组a【i】【j】和一个用于判断的表头数组number【】。在开始进行八皇后棋子排列的时候,首先对行进行递增循环,即i初始值为0,每次i++,i最大值为8的循环。在每次循环中产生一个小于8的随机数q,然后判断表头数组number【】中number【q】位置的值是否为1,如果不是,则在二维数组a【i】【q】位置上打印表示棋子的“K”;如果为1,则返回产生随机数的步骤继续产生随机数。在循环到i>8时,跳出循环,这时候一个完整的八皇后
2、排列也就出来了。源代码:packagequeen;importjava.awt.*;importjava.awt.event.*;classequeenextendsFrameimplementsActionListener{//构造界面和定义数组Buttonenter;Buttonclean;Buttonexit;intnumber[]=newint[8];inti,j,q;Labela[][]=newLabel[8][8];equeen(Strings){GridLayoutgrid;grid
3、=newGridLayout(9,8);setLayout(grid);enter=newButton("begin");clean=newButton("clean");exit=newButton("esit");for(inti=0;i<8;i++){for(intj=0;j<8;j++){a[i][j]=newLabel();if((i+j)%2==0)a[i][j].setBackground(Color.yellow);elsea[i][j].setBackground(Color.g
4、ray);add(a[i][j]);}}for(inti=0;i<8;i++){number[i]=0;//初始化判断数组}add(enter);add(clean);add(exit);enter.addActionListener(this);clean.addActionListener(this);exit.addActionListener(this);setBounds(100,100,300,300);setVisible(true);validate();}publicvoidac
5、tionPerformed(ActionEvente){if(e.getSource()==enter){for(inti=0;i<8;i++){for(intj=0;j<8;j++){a[i][j].setText("");}}for(inti=0;i<8;i++){while(true){q=(int)(Math.random()*8);if(number[q]==0){a[i][q].setText("K");number[q]=1;break;}elseif(number[q]!=0)co
6、ntinue;}}for(inti=0;i<8;i++){number[i]=0;}}if(e.getSource()==clean){for(inti=0;i<8;i++){for(intj=0;j<8;j++){a[i][j].setText("");}}}if(e.getSource()==exit){System.exit(0);}}}publicclassqueen{publicstaticvoidmain(String[]args){newequeen("八皇后问题");}}
此文档下载收益归作者所有