八皇后問題

2021-09-27 18:44:08 字數 1284 閱讀 8970

蒜頭君在和朋友下西洋棋,下的時候突發奇想,在西洋棋棋盤的每個格仔上寫下 1 到 99 內的數字,又拿出了珍藏已久的 8 個皇后棋子。西洋棋中的皇后可以將同一行、同一列和同一對角線上的對方棋子吃掉。小蒜頭在想,怎麼擺放這 8 個皇后的位置才能讓她們不能互相攻擊,同時這 8 個皇后佔的格仔上的數字總和最大。

蒜頭君來求助熱愛演算法的你了,你能幫她算出答案嗎?

輸入格式

每個棋盤有 64 個數字,分成 8 行 8 列輸入,就如樣例所示。棋盤上每乙個數字均小於 100。

輸出格式

輸出乙個最大的總和

樣例輸入12

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

2728

2930

3132

3334

3536

3738

3940

4142

4344

4546

4748

4850

5152

5354

5556

5758

5960

6162

6364

樣例輸出

260

#include

using

namespace std;

int a[9]

[9], b[9]

[9]=

, max0 =

0, s =

0, y =1;

void

dfs(

)else

for(

int i =

1; i <=

8; i++)if

(y + i - j >=

1&& y + i - j <=8)

}for

(int j =

1; j <=

8; j++)if

(y + i - j >=

1&& y + i - j <=8)

} y++

;dfs()

; y = y0;

s = s0;

for(

int j =

1; j <=

8; j++)}

}}intmain()

八皇后問題

八皇后問題 ackarlix 八皇后問題是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯 1850 年提出 在 8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有 76種方案。1854 年在...

八皇后問題

include iostream.h int a 8 8 棋盤 int r 8 結果 int i,j int count 0 void init i j 0 int judge int x,int y for int mi x 1,mj y mi 1 mi for int ri x 1,rj y 1...

八皇后問題

package quess 由於八個皇后的任意兩個不能處在同一行,那麼這肯定是每乙個皇后佔據一行。於是我們可以定義乙個陣列columnindex 8 陣列中第i個數字表示位於第i行的皇后的列號。先把columnindex的八個數字分別用0 7初始化,接下來我們要做的事情就是對陣列columninde...