日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 52.N-Queens II

發(fā)布時(shí)間:2024/4/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 52.N-Queens II 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

804. N-Queens II(N 皇后 II)

?

題目:

  

  n?皇后問題研究的是如何將?n?個(gè)皇后放置在?n×n?的棋盤上,并且使皇后彼此之間不能相互攻擊。

  給定一個(gè)整數(shù)?n,返回?n?皇后不同的解決方案的數(shù)量。

  示例:

  輸入: 4輸出: 2解釋: 4 皇后問題存在如下兩個(gè)不同的解法。[[".Q..", ?// 解法 1"...Q","Q...","..Q."],["..Q.", ?// 解法 2"Q...","...Q",".Q.."]]

?

思路:

?

  這題思路較清晰,先在第一行第一列放置皇后,之后第二行尋找可以放皇后的地方,一行一行放置,如果哪一行不能放置,那么就回溯到上一行,如果放置到了最后一行,那么就代表這種情況成立,計(jì)數(shù)加一,返回之前一步。?

?

?

圖解:

  從左上角開始,line1是正對(duì)角線,line2是斜對(duì)角線,col是豎列。

? ? ? ? 

?

代碼:

?

1 // 2 private static boolean col[]; 3 4 //正對(duì)角線 x-y+n-1 5 private static boolean line1[]; 6 7 //斜對(duì)角線 x+y 8 private static boolean line2[]; 9 10 public static int totalNQueens(int n) 11 { 12 col = new boolean[n]; 13 line1 = new boolean[2 * n - 1]; 14 line2 = new boolean[2 * n - 1]; 15 return putQueen(n, 0); 16 } 17 18 private static int putQueen(int n, int index) 19 { 20 int flag = 0; 21 if (index == n) 22 return 1; 23 24 for (int i = 0; i < n; i++) 25 { 26 if (!col[i] && !line1[i - index + n - 1] && !line2[i + index]) 27 { 28 29 col[i] = true; 30 line1[i - index + n - 1] = true; 31 line2[i + index] = true; 32 flag = flag + putQueen(n, index + 1); 33 34 col[i] = false; 35 line1[i - index + n - 1] = false; 36 line2[i + index] = false; 37 } 38 } 39 return flag; 40 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/blogxjc/p/10890322.html

總結(jié)

以上是生活随笔為你收集整理的LeetCode 52.N-Queens II的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。