leetcode每日一题(20241202)

leetcode每日一题(20241202)

52 N 皇后 题目描述:

bash 复制代码
n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。
给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。

n皇后问题,之前看过一个软考的讲的很清晰,就是放一个然后就去和之前的已经放好的皇后位置去挨个比较当前放的这个皇后位置是否合法,直到放完所有的棋牌。

java 复制代码
class Solution {
    public int totalNQueens(int n) {
        int[] pre=new int[n+1];
        int count=0;
        int j=1;
        while(j>=1){
            do{
            // 从棋盘的第一个开始试探方知皇后
                pre[j]=pre[j]+1;
            }while(pre[j]<=n&&!check(pre,j));
            if(pre[j]<=n){
                if(j==n){
                    count++;
                }else{
                    j++;
                }

            }else{
                pre[j]=0;
                j--;
            }
        }
        return count;
    }
    // 检测当前位置是否和之前的已经放的皇后位置发生冲突
    public boolean check(int[] pre,int j){
        for(int i=1;i<j;i++){
            if(pre[i]==pre[j]||Math.abs(i-j)==Math.abs(pre[i]-pre[j])){
                return false;
            }
        }
        return true;
    }
}

加油!!!好久没写了。

相关推荐
梁小憨憨7 分钟前
变分推断(Variational Inference)
人工智能·算法·机器学习
就爱学编程15 分钟前
重生之我在异世界学编程之C语言:选择结构与循环结构篇
c语言·数据结构·算法
一只大侠18 分钟前
计算S=1!+2!+3!+…+N!的值:JAVA
java·开发语言
一只大侠20 分钟前
输入一串字符,以“?”结束。统计其中字母个数,数字个数,其它符号个数。:JAVA
java·开发语言·算法
以后不吃煲仔饭21 分钟前
面试小札:线程池
java·后端·面试
Oneforlove_twoforjob21 分钟前
【Java基础面试题011】什么是Java中的自动装箱和拆箱?
java·开发语言
winstongit32 分钟前
捷联惯导原理和算法预备知识
算法·机器人
优雅的落幕38 分钟前
多线程---线程安全(synchronized)
java·开发语言·jvm
Charlie__ZS39 分钟前
帝可得-设备管理
java·maven·intellij-idea·idea
爱上语文44 分钟前
请求响应:常见参数接收及封装(数组集合参数及日期参数)
java·开发语言·spring boot·后端