六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

8皇后問題的java完成

[摘要]/* * Created on 2003-3-28 * n皇后問題算法。 * 把棋盤看成一個(gè)坐標(biāo)系,以左下角為原點(diǎn)(0,0)。坐標(biāo)系的每個(gè)點(diǎn)為一個(gè)Point類。 * 每個(gè)皇后為一個(gè)皇后對象Queen...
/*
* Created on 2003-3-28
* n皇后問題算法。
* 把棋盤看成一個(gè)坐標(biāo)系,以左下角為原點(diǎn)(0,0)。坐標(biāo)系的每個(gè)點(diǎn)為一個(gè)Point類。
* 每個(gè)皇后為一個(gè)皇后對象Queen。
* 判斷一個(gè)點(diǎn)的坐標(biāo)是否在,一個(gè)皇后控制的范圍的函數(shù)為Queen.isUnderControl(point)。
*
*/
package bia.arithmetic;

import java.util.Date;

/**
* @author Administrator
*
* To change this generated comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class EightQueen {

Queen[] stack = new Queen[8];
int sp = 0;
int num = 0;

public EightQueen() {
  num = 8;
  stack = new Queen[num];
  sp = 0;
}

public EightQueen(int num) {
  this.num = num;
  stack = new Queen[num];
  sp = 0;
}

/**
  * 打印皇后的坐標(biāo)列表。
  * @renzc
  *
  */
public void list() {
  System.out.println("Begin list the stack Point:");
  for (int i = 0; i < sp; i++) {
   stack[i].pos.println();
  }
  System.out.println("End list the stack Point:");
}

/**
  * 主算法流程。
  * @Administrator
  *
  */
public void calc() {
  sp = 0;
  stack[sp++] = new Queen();
  while (sp >= 0 && sp <= num - 1) {
   Queen queen = getQueen(sp);
   if (null == queen) {
    boolean flag = true;
    while (flag) {
     --sp;
     if (sp < 0)
      break;
     if (stack[sp].pos.y == num - 1) {

     }
     else {
      stack[sp++].pos.y++;
      flag = false;
      for (int k = 0; k < sp - 1; k++) {
       if (stack[k].isUnderControl(stack[sp - 1].pos)) {
        flag = true;
        break;
       }
      }
     }
    }

   }
   else {
    stack[sp++] = queen;
   }
  }  
}

public Queen getQueen(int x) {
  boolean flag = true;
  int y = 0;
  while (flag) {
   flag = false;
   for (int i = 0; i < x; i++) {
    if (stack[i].isUnderControl(new Point(x, y))) {
     flag = true;
     break;
    }
   }
   if (flag && y <= num - 1) {
    y++;
   }
   else if (y >= num) {
    return null;
   }
  }
  return new Queen(new Point(x, y));
}

public static void main(String[] args) {
  EightQueen a = new EightQueen(20);
  long start = new Date().getTime();
  System.out.println("起始時(shí)間:[" + start + "]");
  a.calc();
  long end = new Date().getTime();
  System.out.println("截止時(shí)間:[" + end + "]");
  System.out.println("共耗時(shí):[" + (end - start) + "]毫秒");
  if (a.sp > 0) {
   a.list();
  }
  else {
   System.out.println("這個(gè)題目無解!");
  }
}
}

class Point {
int x, y;

public void println() {
  System.out.println("The Point is [x,y]=[" + x + "," + y + "]");
}

public Point() {
  x = 0;
  y = 0;
}

public Point(int x, int y) {
  this.x = x;
  this.y = y;
}
/**
  * @return int
  */
public int getX() {
  return x;
}

/**
  * @return int
  */
public int getY() {
  return y;
}

/**
  * Sets the x.
  * @param x The x to set
  */
public void setX(int x) {
  this.x = x;
}

/**
  * Sets the y.
  * @param y The y to set
  */
public void setY(int y) {
  this.y = y;
}
}

class Queen {
Point pos;
public Queen() {
  pos = new Point();
}
public Queen(Point pos) {
  this.pos = pos;
}
public boolean isUnderControl(Point point) {
  boolean ret = true;
  if (point.x != pos.x
   && point.y != pos.y
   && Math.abs(point.x - pos.x) != Math.abs(point.y - pos.y)
   && Math.abs(point.x + point.y) != Math.abs(pos.x + pos.y)) {
   ret = false;
  }
  return ret;
}
}


標(biāo)簽:8皇后問題的java完成 
主站蜘蛛池模板: 欧美性视频一区二区三区 | 欧美怡红院免费的全部视频 | 日本视频在线观看播放免费 | 亚洲 欧美 清纯 丝袜 另类 | 日韩中文一区 | 手机在线观看国产精选免费 | 一级女性全黄久久生活片免费 | 在线观看国产日韩 | 人人模人人看 | 日本在线观看高清不卡免v 日本在线观看a | 亚洲国产三级在线观看 | 日韩免费福利视频 | 亚州一级毛片在线 | 婷婷开心中文字幕 | 亚洲欧美日韩图片 | 亚洲 欧美 精品 | 青青草免费观看视频 | 日韩诱惑| 日韩免费高清一级毛片在线 | 中文字幕精品波多野结衣 | 五月综合色 | 欧美综合在线观看 | 日韩午夜伦| 日韩毛片免费观看 | 欧美性战 | 亚洲人与牲动交xxxxbbbb | 午夜影院在线免费 | 香蕉人人超人人超免费看视频 | 日韩三级毛片 | 日本不卡一区二区三区视频 | 日本一区二区三区在线 观看网站 | 色妞影视 | 亚洲伦理片 | 婷婷六月久久综合丁香乐透 | 青草福利在线 | 色老久久精品偷偷鲁一区 | 在线观看h视频 | 色噜噜色噜噜天天拍一拍 | 日韩久久影院 | 三级国产| 色好看在线视频播放 |