8 皇帝問題(皇帝還是比較牛逼) - 演算法
一、問題描述
有一個 8 * 8 的棋盤,和 8 個皇后,皇后的攻擊規則:任意一個皇后可以攻擊同一行、同一列、正反對角線上的皇后。問題:如何擺放8個皇后,可以讓她們互相不攻擊。
提示:一行或一列只能放一個皇后。
二、解題思路
採用深度優先遍歷方式,從第0行開始,逐行檢視每一列中那些位置可以擺放皇后,也就是每一行需要掃描8列,而且還需要判斷當前位置和擺放過皇后的位置是否符合規則。
三、DFS(深度優先搜尋)
套路:
// 引數n:問題規模
void dfs(int n){
// dfs 出口
if(){
...
return;
}
// dfs body
處理當前內容
// dfs 遞迴
處理當前內容與子問題的關係
}
二叉樹遍歷
package com.daxiong.day6;
/**
* 1
* 2 3
* 4 5 6 7
* */
public class TowTree {
private static int[] tree = {0,1,2,3,4,5,6,7}; // 第0為站位,不參與實際問題
public static void main(String[] args) {
dfs(1);
}
// 二叉樹前序遍歷
public static void dfs(int root){
if (root*2 >= 8){
System.out.println(tree[root]);
return;
}
System.out.println(tree[root]);
dfs(root*2); // 左子樹
dfs(root*2+1); // 右子樹
}
}
四、程式碼實現
package com.daxiong.day6;
/**
* 8 皇后問題
* */
public class EightQueen {
// 8 個皇后
private static int SIZE = 8;
// 存放規則:索引(0-7)表示行,索引對應的值(0-8)表示該行可以存放皇后的列值,以此構建一個類似二位陣列
private static int[] queen = new int[SIZE];
// 方案數
private static int step = 0;
public static void main(String[] args) {
dfs(0);
}
/**
* @fun 判斷當前行可以存放皇后的列
* @param key : 當前行(可以看作座標中的 X1)
* @param value : 當前行對應的列值(可以看作座標中X1對應的值Y1)
* @return : 當前行對應的列是否可以存放皇后
*/
public static boolean isOk(int key, int value) {
for (int i = 0; i < key; i++) {
if (i == key || queen[i] == value || (i - key == queen[i] - value) || (key - i == queen[i] - value)) {
return false;
}
}
return true;
}
/**
* @fun dfs,深度遍歷遞迴函式
* @param row : 行掃描,問題規模
*/
public static void dfs(int row) {
if (row == SIZE) {
step++;
print(step);
return;
}
for (int i = 0; i < SIZE; i++) {
if (isOk(row, i)) {
queen[row] = i;
dfs(row + 1);
}
}
}
/**
* @fun 列印 8 皇后可行方案
* @param step : 第幾個方案
*/
public static void print(int step) {
System.out.println("方案(" + step + "):");
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (queen[i] == j) { // 皇后位置
System.out.print(" @ ");
} else { // 非皇后
System.out.print(" * ");
}
}
System.out.println();
}
}
}
五、答案
共有 92 中方案:
方案(1):
@ * * * * * * *
* * * * @ * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * @ * * * *
方案(2):
@ * * * * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
* * * * * * @ *
* * * @ * * * *
* @ * * * * * *
* * * * @ * * *
方案(3):
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * * @ * * *
* * @ * * * * *
方案(4):
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
* * * * * @ * *
* * @ * * * * *
方案(5):
* @ * * * * * *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
方案(6):
* @ * * * * * *
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
方案(7):
* @ * * * * * *
* * * * @ * * *
* * * * * * @ *
* * * @ * * * *
@ * * * * * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
方案(8):
* @ * * * * * *
* * * * * @ * *
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * * * @
* * @ * * * * *
* * * * @ * * *
方案(9):
* @ * * * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
@ * * * * * * *
* * * @ * * * *
* * * * * * @ *
* * * * @ * * *
方案(10):
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
* * * * @ * * *
@ * * * * * * *
* * * @ * * * *
方案(11):
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
* * * * * * * @
@ * * * * * * *
* * * @ * * * *
* * * * * @ * *
* * @ * * * * *
方案(12):
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
@ * * * * * * *
* * @ * * * * *
* * * * @ * * *
* * * * * * @ *
* * * @ * * * *
方案(13):
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
* * * * * @ * *
方案(14):
* * @ * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * * * @
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * @ * *
方案(15):
* * @ * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
* * * * * * @ *
@ * * * * * * *
方案(16):
* * @ * * * * *
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
方案(17):
* * @ * * * * *
* * * * @ * * *
* * * * * * * @
* * * @ * * * *
@ * * * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * @ * *
方案(18):
* * @ * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * @ * * *
* * * * * * * @
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
方案(19):
* * @ * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * * * @ *
@ * * * * * * *
* * * @ * * * *
* * * * * * * @
* * * * @ * * *
方案(20):
* * @ * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
@ * * * * * * *
* * * * * * * @
* * * @ * * * *
方案(21):
* * @ * * * * *
* * * * * @ * *
* * * @ * * * *
@ * * * * * * *
* * * * * * * @
* * * * @ * * *
* * * * * * @ *
* @ * * * * * *
方案(22):
* * @ * * * * *
* * * * * @ * *
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
方案(23):
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
@ * * * * * * *
* * * @ * * * *
* * * * * * @ *
* * * * @ * * *
* @ * * * * * *
方案(24):
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
@ * * * * * * *
* * * * @ * * *
* * * * * * @ *
* @ * * * * * *
* * * @ * * * *
方案(25):
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
方案(26):
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * * * @
* * * * @ * * *
@ * * * * * * *
* * * @ * * * *
* * * * * @ * *
方案(27):
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
@ * * * * * * *
* * * * @ * * *
方案(28):
* * @ * * * * *
* * * * * * * @
* * * @ * * * *
* * * * * * @ *
@ * * * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * @ * * *
方案(29):
* * * @ * * * *
@ * * * * * * *
* * * * @ * * *
* * * * * * * @
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
方案(30):
* * * @ * * * *
@ * * * * * * *
* * * * @ * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
方案(31):
* * * @ * * * *
* @ * * * * * *
* * * * @ * * *
* * * * * * * @
* * * * * @ * *
@ * * * * * * *
* * @ * * * * *
* * * * * * @ *
方案(32):
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
@ * * * * * * *
* * * * @ * * *
方案(33):
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
* * * * * * * @
* * * * @ * * *
@ * * * * * * *
方案(34):
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
@ * * * * * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
方案(35):
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * * @ * *
方案(36):
* * * @ * * * *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
@ * * * * * * *
* * @ * * * * *
* * * * @ * * *
* * * * * * @ *
方案(37):
* * * @ * * * *
* * * * * @ * *
@ * * * * * * *
* * * * @ * * *
* @ * * * * * *
* * * * * * * @
* * @ * * * * *
* * * * * * @ *
方案(38):
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * @ * * *
方案(39):
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* * * * @ * * *
* @ * * * * * *
方案(40):
* * * @ * * * *
* * * * * * @ *
@ * * * * * * *
* * * * * * * @
* * * * @ * * *
* @ * * * * * *
* * * * * @ * *
* * @ * * * * *
方案(41):
* * * @ * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * * * @
* @ * * * * * *
* * * * @ * * *
@ * * * * * * *
* * * * * @ * *
方案(42):
* * * @ * * * *
* * * * * * @ *
* * * * @ * * *
* @ * * * * * *
* * * * * @ * *
@ * * * * * * *
* * @ * * * * *
* * * * * * * @
方案(43):
* * * @ * * * *
* * * * * * @ *
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
方案(44):
* * * @ * * * *
* * * * * * * @
@ * * * * * * *
* * @ * * * * *
* * * * * @ * *
* @ * * * * * *
* * * * * * @ *
* * * * @ * * *
方案(45):
* * * @ * * * *
* * * * * * * @
@ * * * * * * *
* * * * @ * * *
* * * * * * @ *
* @ * * * * * *
* * * * * @ * *
* * @ * * * * *
方案(46):
* * * @ * * * *
* * * * * * * @
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * @ * *
方案(47):
* * * * @ * * *
@ * * * * * * *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
方案(48):
* * * * @ * * *
@ * * * * * * *
* * * * * * * @
* * * @ * * * *
* @ * * * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
方案(49):
* * * * @ * * *
@ * * * * * * *
* * * * * * * @
* * * * * @ * *
* * @ * * * * *
* * * * * * @ *
* @ * * * * * *
* * * @ * * * *
方案(50):
* * * * @ * * *
* @ * * * * * *
* * * @ * * * *
* * * * * @ * *
* * * * * * * @
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
方案(51):
* * * * @ * * *
* @ * * * * * *
* * * @ * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * * * @
* * * * * @ * *
@ * * * * * * *
方案(52):
* * * * @ * * *
* @ * * * * * *
* * * * * @ * *
@ * * * * * * *
* * * * * * @ *
* * * @ * * * *
* * * * * * * @
* * @ * * * * *
方案(53):
* * * * @ * * *
* @ * * * * * *
* * * * * * * @
@ * * * * * * *
* * * @ * * * *
* * * * * * @ *
* * @ * * * * *
* * * * * @ * *
方案(54):
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * @ * *
* * * * * * * @
* @ * * * * * *
* * * @ * * * *
* * * * * * @ *
方案(55):
* * * * @ * * *
* * @ * * * * *
@ * * * * * * *
* * * * * * @ *
* @ * * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
方案(56):
* * * * @ * * *
* * @ * * * * *
* * * * * * * @
* * * @ * * * *
* * * * * * @ *
@ * * * * * * *
* * * * * @ * *
* @ * * * * * *
方案(57):
* * * * @ * * *
* * * * * * @ *
@ * * * * * * *
* * @ * * * * *
* * * * * * * @
* * * * * @ * *
* * * @ * * * *
* @ * * * * * *
方案(58):
* * * * @ * * *
* * * * * * @ *
@ * *
相關推薦
8 皇帝問題(皇帝還是比較牛逼) - 演算法
一、問題描述 有一個 8 * 8 的棋盤,和 8 個皇后,皇后的攻擊規則:任意一個皇后可以攻擊同一行、同一列、正反對角線上的皇后。問題:如何擺放8個皇后,可以讓她們互相不攻擊。 提示:一行或一列只能放一個皇后。
二、解題思路 採用深度優先遍歷方式,從第0行開始,逐行檢視每一列中
一個比較牛逼好用的圓形progress進度
因公司需要些一個載入的progress。然後美工妹子給出的圖片是這個樣子,開始我是拒絕的。但是男人怎麼能說不行。然後就默默的擼程式碼了。
一、需求說明:
先說下這個圖片的需求:
1.首先最外面一層是有很多小圓點的,當進度沒有
HTTP協議詳解(真的很牛逼)
1、基礎:
高層協議有:檔案傳輸協議FTP、電子郵件傳輸協議SMTP、域名系統服務DNS、網路新聞傳輸協議NNTP和HTTP協議等
中介由三種:代理(Proxy)、閘道器(Gateway)和通道(Tunnel),一個代理根據URI的絕對格式來接受請求,重寫全部或部分訊息,通過 URI的標識把已
php遞迴實現無限級分類樹(牛逼)
轉載路徑:http://www.php.cn/php-weizijiaocheng-353267.html
無限級樹狀圖可以說是無限級欄目的一個顯著特徵,我們接下來就來看看兩種不同的寫法。
一.資料庫設計
1
2
3
JVM虛擬機---本地接口(我還不太會)
類庫 jobject 其他 pri interface cpp 比較 con 基本類型 轉載http://www.newhua.com/2008/0328/33542_2.shtml
Java本地接口(Java Native Interface (JNI))允許運行在J
map的遍歷(自己認為比較好的)
第一種:
for (Integer in : map.keySet()) { //map.keySet()返回的是所有key的值
&
VS2017連線MYSQL 8.0(小白必看!)
首先用到的工具是:
安裝過程自行操作!!!
最下面有帶註釋的詳細測試原始碼和效果圖;
對接步驟1:
右鍵單擊專案名稱,選擇屬性
對接步驟2:
專案名->屬性->c/c+±>常規->附加包含目錄 新增路徑:C:\\Program F
記錄一下最近用到的linux指令(也算比較常用的)
1.用vi開啟文件之後,如果想利用關鍵詞快速定位到某一部分可以在命令模式下 (按 i 之前)按下斜槓 / , 這時在終端命令視窗的左下角會出現斜槓 / ,然後在斜槓後面輸入 關鍵詞 ,按下回車就會進行查詢,按n會繼續搜尋下一個,N會反方向搜尋。 2.利用vi開啟文件後,如果文件較長的話利用
VIM基本操作(本人還不熟悉的~)
更大範圍的移動:
* 當游標停留在一個單詞上,* 鍵會在檔案內搜尋該單詞,並跳轉到下一處;
# 當游標停留在一個單詞上,# 在檔案內搜尋該單詞,並跳轉到上一處;
(/) 移動到 前/後 句 的開始;
{/}
中國網路安全企業50強(來源自安全牛公司)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
 
【okhttp】Post請求設定utf-8編碼(解決漢語請求亂碼問題)
如果用FormBody 傳送post表單請求,就不能設定編碼格式,contentType方法沒有暴露出來,預設也不是UTF-8,引數是漢字就會亂碼。
所以換一種方式 ,用 RequestBody
windows 10 x64系統 jdk1.7、jdk1.8 切換(jdk為exe安裝版本)
電腦先安裝的1.7,後來安裝1.8,改JAVA_HOME為1.8後cmd->java、javac、java -version可用1.8
後想改為1.7,更改環境變數(步驟1)後cmd->java、javac、java -version,java -versi
CRC(迴圈冗餘校驗)演算法入門
寫給嵌入式程式設計師的迴圈冗餘校驗(CRC)演算法入門引導前言CRC校驗(迴圈冗餘校驗)是資料通訊中最常採用的校驗方式。在嵌入式軟體開發中,經常要用到CRC 演算法對各種資料進行校驗。因此,掌握基本的CRC演算法應是嵌入式程式設計師的基本技能。可是,我認識的嵌入式程式設計師中
LCS(longest common subsequence)(最長公共子序列)演算法(模板)
看了幾分寫的相當好的部落格:
下面內容來轉載自上面文章
問題描述
什麼是最長公共子序列呢?好比一個數列 S,如果分別是兩個或多個已知數列的子序列,且是所有符合此條件序列中最長的,則S 稱為已知序列的最長公共子序列。
舉個例子,如:有兩條
最短路徑 單源最短路徑Dijkstra(迪傑斯特拉)演算法 Floyd(弗洛伊德)演算法
兩個演算法的主要思想都是鬆弛,就是兩點間的距離通過第三點來變短
比如 1->3=10 1->2=2 2->3=5 這樣你就可以通過2號點把1,3兩點的距離縮短為7
Dijkstra演算法被稱為單源最短路,意思就是隻能計算某個點到
最小生成樹之kruskal(克魯斯卡爾)演算法(C++實現)
參考部落格:https://blog.csdn.net/YF_Li123/article/details/75195549
最小生成樹之kruskal(克魯斯卡爾)演算法
kruskal演算法:同樣解決最小生成樹的問題,和prim演算法不同,kruskal演算法採用了邊貪心
深入理解Dijkstra(迪傑斯特拉)演算法(正確思路+優化+原理)
這裡需要一個很好的例子,這裡先拿網上流傳的例子作為反例。
問題1:不符合勾股定理
AC=3,CB=2,AB=6
難道這樣真的無傷大雅嗎?假設你的起點是A,終點是B,難道不應該是兩點之間線段最短嗎?、
問題2:完美地掃到了每個點
按照他的思維邏輯來,確實每個點都可以掃
C++ 二分查詢(折半查詢、Binary Search)演算法
思路:首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;
否則利用中間位置記錄將表分成前、後兩個子表
資料結構之---C語言實現最短路徑之Dijkstra(迪傑斯特拉)演算法
此處共有兩段程式碼:
一、
這段程式碼比較全面,其中參考了github上的相關原始碼。可以說功能強大。
//Dijkstra(迪傑斯特拉演算法)
#include <stdio.h>
#include <stdlib.h>
#include <
單源最短路徑長度Dijkstra(迪傑斯特拉)演算法
求單源最短路徑長度的時間複雜度為O(n*n),空間複雜度同樣為O(n*n),n為總的節點個數
模組化實現函式原始碼如下:
#define POINT 250
#define MAXLENGTH 1000001
int road[POINT][POINT];
int len