java实现N皇后递归算法
来源:互联网 发布:广西广电网络初装费用 编辑:程序博客网 时间:2024/06/14 01:22
这里是N皇后实现递归算法的java实现:
package NQueensDG;import java.util.Scanner;public class NQUEENSDIGUI {/** * @author YuYunTan(谭淇蔚) * *N 皇后问题: *在一个 N * N 的国际象棋棋盘中, *怎样放置 N 个皇后才能使 N 个皇后之间不会互相有威胁而共同存在于棋局中, *即在 N * N 个格子的棋盘中没有任何两个皇后是在同一行、同一列、同一斜线上。 * *下面是递归的回溯法 *递归方法backtrack(1)实现对整个解空间的回溯搜索 *backtrack(i)搜索解空间中第i层子树。 *类NQUEENSDIGUI的数据成员记录解空间中的结点信息,以减少窗格backtrack的参数。sum记录可行解的 方案数 * *///------------------------------------------------------------//下面是数据成员--------------------------------------------------static int n;//皇后个数static int []x;//当前解static long sum;//成员定义结束----------------------------------------------------NQUEENSDIGUI(int nn){n =nn;sum =0;x = new int [n+1];for(int i=0;i <= n ;i++)x[i]=0;//初始化都为0backtrack(1);}private void backtrack(int t) {// TODO 自动生成的方法存根if(t > n){sum++;print(x);}elsefor(int i=1;i<=n;i++){x[t]=i;if(place(t))backtrack(t+1);//递归调用,循环求解}}private void print(int[] x2) {// TODO 自动生成的方法存根System.out.println((x2.length-1)+"皇后的解为:");for(int i=1;i<=n;i++){System.out.print(" "+x2[i]);}System.out.println("");}private boolean place(int k) {// TODO 自动生成的方法存根for(int j=1;j < k;j++){if((Math.abs(k-j) == Math.abs(x[j]-x[k]))||(x[j] == x[k]))return false;}return true;}public static void main(String[] args) {int s;Scanner input = new Scanner(System.in);s = input.nextInt();NQUEENSDIGUI a = new NQUEENSDIGUI(s);System.out.println("---------------------------------");System.out.println("华丽丽的"+s+"皇后问题解");System.out.println(s+"皇后一共有"+sum+"个解!");input.close();}}
1 0
- java实现N皇后递归算法
- n皇后问题java递归实现
- java实现N皇后迭代算法
- java分治算法实现n皇后问题
- N皇后递归剪枝实现
- 递归实现n皇后问题
- 递归分治算法之N皇后问题(Java版本)
- N皇后Java算法
- NOJ1267 N皇后(非递归算法)
- NOJ1267 N皇后(非递归算法)
- N皇后问题的非递归算法
- 算法学习之递归--N皇后问题
- N皇后高效算法实现
- 八皇后及N皇后的回溯与递归算法
- 回溯法实例―n皇后算法 (java实现)
- N皇后问题的递归回溯实现
- N皇后(回溯)递归实现
- java实现N皇后问题
- Android之创建选项菜单
- 汇编实验(三)
- Stay hungry, stay foolish
- Hadoop读书笔记(十二)MapReduce自定义排序
- 答辩周年记------与刚入职场/即将答辩的程序猿们共勉
- java实现N皇后递归算法
- iOS开发:数据存储之plist文件操作
- CMM词法分析(C++实现)
- 利用Gson转换Json实例
- java_JDK安装与环境配置
- c#反编译
- IFeatureCursor
- 【GBK转UTF-8】
- 亚当斯分区曝光法俗解之三