***6.22-八皇后问题
2015-10-09 20:24
591 查看
问题及代码:
运行结果:
知识点总结:
DFS。
学习心得:
(⊙v⊙)嗯写了一晚上。。
/* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:Queen.java *作 者:单昕昕 *完成日期:2015年10月9日 *版 本 号:v1.0 * *问题描述:列出八皇后问题的所有情况 *程序输入:无。 *程序输出:八皇后问题的所有情况。 */ import java.util.*; import java.util.Scanner; public class Test { public final static int[][]map=new int[8][8]; //是否有皇后的标记数组 public static int casenum=1; //解决方案的个数 public static void dfs(int row) //列举出2种情况,从行入手 { int column; for (column=0; column<8; column++) //依次列举八列 { map[row][column]=1; //标记皇后位置 if (row==0||check(row,column)==0) { if (row<7) //当行没有列举完的时候继续列举 dfs(row+1); else //列举到第八行后输出 print(); } map[row][column]=0; //取消标记 } } public static int check(int row,int column)//检查行列对角线 { int i; for (i=1; i<8; i++) //本行之前的该列某一行有皇后(上) //本列之前的该行某一列有皇后(左) //本列之后的该行某一列有皇后(右) //左上对角线 if((row-i>=0&&map[row-i][column]==1)||(column-i>=0&&map[row][column-i]==1)||(column+i<8&&map[row][column+i]==1)||(row-i>=0&&column-i>=0&&map[row-i][column-i] ==1)||(row-i>=0&&column+i<8&&map[row-i][column+i]==1)) //右上对角线 return 1; return 0; } public static void print()//输出各种情况 { int i,j; System.out.println("case:"+casenum); ++casenum; //方案个数加一 for (i=0; i<8; i++) { System.out.print("|"); for (j=0; j<8; j++) { if (map[i][j]==1) //有皇后用Q表示 System.out.print("Q|"); else System.out.print(" |"); } System.out.println("\n"); } System.out.println("\n"); } public static void main(String[] args) { dfs(0); //从第一行开始 } }
运行结果:
知识点总结:
DFS。
学习心得:
(⊙v⊙)嗯写了一晚上。。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统