8皇后问题
来源:互联网 发布:bilibili mac 编辑:程序博客网 时间:2024/06/09 15:36
代码如下:
import java.util.ArrayList;public class EightQueue {/** * 由于每行必有一个皇后,所以在dfs时,只考虑,将这个行的皇后放到列的哪个位置;否则会出现重复现象 */private static ArrayList<Float> ylist,pointlist1,pointlist2;private static int time=0;public static void main(String[] args) {// TODO 自动生成的方法存根ylist=new ArrayList<Float>();pointlist1=new ArrayList<Float>();pointlist2=new ArrayList<Float>();dfs(1);System.out.println(time);}private static void dfs(float amount) {// TODO 自动生成的方法存根if(amount>8){return;}for(float j=1;j<=8;j++){if(check(j,ylist)){ylist.add(j);if(check(reckon(j,amount,1),pointlist1)&&check(reckon(j,amount,-1),pointlist2)){//放置第8个时条件都符合,情况数+1if(amount==8){time++;}pointlist1.add(reckon(j,amount,1));pointlist2.add(reckon(j,amount,-1));dfs(amount+1);pointlist1.remove(pointlist1.size()-1);pointlist2.remove(pointlist2.size()-1);}ylist.remove(ylist.size()-1);}}}private static float reckon(float x,float y,int flag){float b1=0;if(flag==1){b1=y-x;}else if(flag==-1){b1=y+x;}return b1;}//not contain i return true ,or return falseprivate static boolean check(float i, ArrayList<Float> list2) {// TODO 自动生成的方法存根int len=list2.size();if(len==0){return true;}for(int p=0;p<len;p++){if(i==list2.get(p)){return false;}}return true;}}
阅读全文
0 0
- 8皇后问题和N皇后问题
- 8皇后问题改进~
- 8皇后问题
- 8皇后问题求解
- 8皇后问题
- 8皇后问题
- 8皇后问题算法
- 8皇后问题
- 8皇后问题
- 8皇后问题
- 8皇后问题
- 8皇后问题
- 8皇后问题
- 8皇后问题
- 【算法】8皇后问题
- 8皇后问题续
- 8皇后问题算法
- 8皇后问题
- 并查集理解 【这个比较形象】 附:SDUTOJ 数据结构实验:连通分量个数
- python统计中文单词
- Linux基础命令
- Ubuntu 16.04 安装搜狗输入法教程
- 平衡树(splay treap)(普通平衡树,郁闷的出纳员)
- 8皇后问题
- C Primer Plus学习笔记----第四章字符串和格式化输入/输出
- 交叉编译工具链
- lib和dll的区别,生成
- for循环实用实例
- restful架构简单理解
- 解决Visual C++ Redistributable for Visual Studio 2015的安装问题
- 如何在编译器(vs2010)里设置调用别人写好的lib和dll
- Hibernate事务隔离级别及基本介绍