<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的八皇后

    Posted on 2006-11-28 05:05 近似凱珊卓 閱讀(318) 評論(0)  編輯  收藏 所屬分類: 我的作業

    八皇后問題,都知道吧。循環套遞歸,比漢諾塔還寒,暈歸暈,索性弄出來了,撒花~~~


    public class Das_n_Damen_Problem extends ChessMiniJava{
    ??? static int n;
    ??? static boolean flag;
    ?static boolean[][] Platzierung;
    ?static boolean[] a;
    ?static boolean[] b;
    ?static boolean[] c;
    ?
    ?public static void main(String[] args){
    ??write("Wie viele Damen?");
    ??n=read();
    ???? flag=false;
    ??Platzierung=new boolean[n][n];
    ??a=new boolean[n];
    ??b=new boolean[2*n];
    ??c=new boolean[2*n];
    ??re(0);
    ?}
    ?
    ?public static void re(int i){
    ??if(flag)
    ???return;
    ??for(int iSpalte=0;iSpalte<n;iSpalte++){
    ???if(a[iSpalte]==false && b[i-iSpalte+n]==false && c[i+iSpalte]==false){
    ????Platzierung[i][iSpalte]=true;
    ????a[iSpalte]=true;
    ????b[i-iSpalte+n]=true;
    ????c[i+iSpalte]=true;
    ????if(i==n-1){
    ?????paintField(Platzierung);
    ?????flag=true;
    ?????return;
    ????}
    ????else{
    ?????re(i+1);
    ????}
    ???Platzierung[i][iSpalte]=false;
    ???a[iSpalte]=false;
    ???b[i-iSpalte+n]=false;
    ???c[i+iSpalte]=false;
    ???}
    ??}
    ?}
    }


    附上ChessMiniJava源代碼:
    import java.awt.GridLayout;
    import javax.swing.JPanel;
    import javax.swing.JFrame;

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Point;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.GradientPaint;
    import java.awt.RenderingHints;

    public class ChessMiniJava extends MiniJava{
    ??? private static class Field extends JPanel {
    ??????? boolean black,queen; Point p;
    ??????? public Field(boolean black,boolean queen){
    ??????????? this.black=black;
    ??????????? this.queen=queen;
    ??????????? p = getLocation();
    ??????? }
    ?public void paint(Graphics g) {
    ??super.paint(g);
    ??if (black) g.setColor(Color.BLACK);
    ??????????????? else g.setColor(Color.WHITE);
    ??????????????? g.fillRect(p.getLocation().x,p.getLocation().y,getWidth()*2,getHeight());
    ??????????????? g.setColor(Color.RED);

    ??????????????? GradientPaint gradient = new GradientPaint(0, 0, Color.YELLOW, getWidth(), 0, Color.RED);
    ??????????????? ((Graphics2D)g).setPaint(gradient);
    ??????????????? ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
    ??????????????????????? RenderingHints.VALUE_ANTIALIAS_ON);
    ??????????????? if (queen) {
    ??????????????????? g.fillOval((int)(getWidth()*.1),(int)(getHeight()*.7),(int)(getWidth()*.8),(int)(getHeight()*.2));
    ??????????????????? int[] x = {(int)(getWidth()*.1), (int)(getWidth()*.9), (int)(getWidth()*.9), (int)(getWidth()*.7), (int)(getWidth()*.5), (int)(getWidth()*.3), (int)(getWidth()*.1)};
    ??????????????????? int[] y = {(int)(getHeight()*.8),(int)(getHeight()*.8),(int)(getHeight()*.2),(int)(getHeight()*.6),(int)(getHeight()*.2),(int)(getHeight()*.6),(int)(getHeight()*.2)};
    ??????????????????? g.fillPolygon(x,y,7);
    ??????????????? }
    ?}
    ??? }
    ??? public static void paintField(boolean[][] field){
    ??????? JFrame myFrame = new JFrame("Spielfeld");
    ??????? JPanel pan = new JPanel();
    ??????? java.util.Set<Integer> s1 = new java.util.HashSet<Integer>(),s2=new java.util.HashSet<Integer>(),s3 = new java.util.HashSet<Integer>(),s4=new java.util.HashSet<Integer>();
    ??????? pan.setLayout(new GridLayout(field.length,field.length));
    ??????? for (int x = 0 ; x < field.length; x ++){
    ??????????? for (int y = 0; y < field[x].length; y++){
    ??????????????? pan.add(new Field((x+y)%2 ==1,field[x][y]));
    ??????????????? if (field[x][y]) { s1.add(x);s2.add(y);s3.add(x+y);s4.add(field.length-1-y+x);};
    ??????????? }
    ??????? }
    ??????? boolean sol=(s1.size()==field.length)&&(field.length==s2.size())&&(field.length==s3.size())&&(field.length==s4.size());
    ??????? if (System.getProperty("SOL","nowshow").equals("show")){
    ??????????? if (sol) pan.setBorder(javax.swing.BorderFactory.createLineBorder(Color.GREEN,5));
    ??????????? else pan.setBorder(javax.swing.BorderFactory.createLineBorder(Color.RED,5));
    ??????? }
    ??????? myFrame.add(pan);
    ??????? myFrame.setSize(400,400);
    ??????? myFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    ??????? myFrame.setVisible(true);
    ??? }
    }


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    posts - 9, comments - 0, trackbacks - 0, articles - 0

    Copyright © 近似凱珊卓

    主站蜘蛛池模板: 337p日本欧洲亚洲大胆色噜噜| 亚洲成av人片在线观看天堂无码| 亚洲国产另类久久久精品小说| a级毛片免费网站| 亚洲国产主播精品极品网红| 在线观看亚洲免费| 免费播放春色aⅴ视频| 免费手机在线看片| 亚洲成AV人片在线观看| 美女被免费网站91色| 亚洲精品白浆高清久久久久久| 色www永久免费网站| 国产成人亚洲综合无码精品 | 羞羞视频网站免费入口| 国产又大又黑又粗免费视频| 黄页网站在线观看免费| 亚洲日本乱码在线观看| 日韩免费无码一区二区三区 | 亚洲第一福利网站| 日本在线看片免费人成视频1000| 亚洲综合区图片小说区| 亚洲黄页网在线观看| 好男人看视频免费2019中文| 国产成人亚洲午夜电影| 亚洲永久精品ww47| 91av免费观看| 亚洲AV无码专区国产乱码不卡| 亚洲中久无码不卡永久在线观看| 黄网站色视频免费在线观看的a站最新| 亚洲视频网站在线观看| 免费观看的a级毛片的网站| www.xxxx.com日本免费| 亚洲国产精品国自产拍电影| 成人免费视频观看无遮挡| 精品国产亚洲一区二区三区| 成人免费大片免费观看网站| 亚洲国产成人久久综合| 国产av天堂亚洲国产av天堂| 四虎成人免费网址在线| 日本免费A级毛一片| 亚洲精品无码专区在线|