如何做可以赚钱的网站上海公司车牌最新价格
news/
2025/10/4 1:05:30/
文章来源:
如何做可以赚钱的网站,上海公司车牌最新价格,wordpress动画,网站建设优化服务咨询游戏地址自己写完了可以根据结果去测试一下。
算法分析
八皇后问题算法思路分析
1#xff09;第一个皇后先放第一行第一列 2#xff09;第二个皇后放在第二行第一列、然后判断是否OK#xff0c; 如果不OK#xff0c;继续放在.第二列、第三列、依次把所有列都放完#x…
游戏地址自己写完了可以根据结果去测试一下。
算法分析
八皇后问题算法思路分析
1第一个皇后先放第一行第一列 2第二个皇后放在第二行第一列、然后判断是否OK 如果不OK继续放在.第二列、第三列、依次把所有列都放完找到一个合适 3继续第三个皇后还是第一列、第二列……直到第8个皇后也能放在一个不冲突的位置算是找到了一个正确解 4)当得到一个正确解时在栈回退到上一个栈时就会开始回溯即将第一个皇后放到第一列的所有正确解全部得到. 然后回头继续第一个皇后放第二列后面继续循环执行 1,2,3,4的步骤 【示意图】
说明理论上应该创建一个二维数组来表示棋盘但是实际上可以通过算法用一个一维数组即可解决问题. arr[8] {0 , 4, 7, 5, 2, 6, 1, 3} //对应arr 下标 表示第几行即第几个皇后arr[i] val , val 表示第i1个皇后放在第i1行的第val1列
实现代码
1判断是否冲突 //查看当我们放置第n个皇后就去检测该皇后和前置的皇后是否冲突public static boolean judge(int n){for (int i 0; i n; i){//下面判断是在同一列 或者 在同一斜线上abs是取绝对值if (array[n] array[i] || Math.abs(array[n] - array[i]) Math.abs(n - i)){return false;}}return true;}2主要逻辑递归与回溯 // n 代表第几行public static void check(int n) {if (n max) {//也就是0-7八个皇后都放置好了//输出当前的 一个解for (int i 0; i max; i) {System.out.print(array[i] );}System.out.println();count ;return;}//开始放置循环每行的位置for (int i 1;i max1; i){//赋值也就是赋纵坐标位置array[n] i;//判断是否冲突if (judge(n)){ //如果不冲突check(n1); //就放置下一个位置}}}
全部代码
package DataStructures.sparsearray;/*** 简单的实现八皇后问题没有贪心算法优化*/
public class queue8 {static int max 8;static int[] array new int[max];static int count 0;public static void main(String[] args) {//定义一个max表示一共有多少个皇后//定义一位数组用下标1来表示行用值来表示纵坐标,比如array{1,5,8,6,3,7,2,4}//测试check(0);System.out.println(总共有 count次解);}//1.第一个皇后先放第一行第一列
//2.第二个皇后放在第二行第一列、然后判断是否OK 如果不OK继续放在第二列、第三列、依次把所有列都放完找到一个合适
//3.继续第三个皇后还是第一列、第二列……直到第8个皇后也能放在一个不冲突的位置算是找到了一个正确解
//4.当得到一个正确解时在栈回退到上一个栈时就会开始回溯即将第一个皇后放到第一列的所有正确解全部得到.
//5.然后回头继续第一个皇后放第二列后面继续循环执行 1,2,3,4的步骤//编写一个方法//n 代表第几行public static void check(int n) {if (n max) {//也就是0-7八个皇后都放置好了//输出当前的 一个解for (int i 0; i max; i) {System.out.print(array[i] );}System.out.println();count ;return;}//开始放置循环每行的位置for (int i 1;i max1; i){//这里循环就把一行的每个位置都判断一次在回溯回来后进行判断在执行check//赋值也就是赋纵坐标位置array[n] i;//判断是否冲突if (judge(n)){ //如果不冲突check(n1); //就放置下一个位置}}}//查看当我们放置第n个皇后就去检测该皇后和前置的皇后是否冲突public static boolean judge(int n){for (int i 0; i n; i){//下面判断是在同一列 或者 在同一斜线上abs是取绝对值if (array[n] array[i] || Math.abs(array[n] - array[i]) Math.abs(n - i)){return false;}}return true;}}最后结果是92种
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926483.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!