1. 程式人生 > >計蒜客—八皇后問題

計蒜客—八皇后問題

努比亞和蘇丹沒有子女,所以他要從一些有整合資格的繼承者中挑選一個出來繼承王位。他希望這個繼承者足夠聰明,所以他準備了一個西洋棋盤,上面的每個格子中均有一個 1-991−99 的數字。他又準備了 88 個皇后棋子。

88 皇后的規則就是不能有任何棋子同行或者同列或者同斜線,在滿足這個規則的同時,王位繼承者還需要讓 88 個皇后所在的位置的數字的和是最大的。

輸入格式

輸入一個數字 k(k\leq 20)k(k≤20),代表棋盤的數量。

接下來有 kk 個棋盤,每個棋盤有 6464 個數字,分成 88 行 88 列出入,具體可見樣例,每一個數字均小於 100100。

輸出格式

每一個棋盤對應輸出最大的數值, 一共輸出 kk 行。

樣例輸入

1
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
48 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
樣例輸出

260

只有暴力,沒想到其他辦法

#include<iostream>
using namespace std;
int maxsum=-1;
int _map[9
][9]; void search(int cur) { static int tot=1, c[8], vis[3][2*8]; int i, j, ok = 0; if (cur == 8) { int sum=0; for (i = 0; i <8; i++) sum+=_map[i][c[i]]; maxsum=max(maxsum,sum); } else { for (i = 0; i < 8; i++) { ok = 1
, c[cur] = i; for (j = 0; j < cur; j++) if (c[cur] == c[j] || cur-c[cur] == j-c[j] || cur+c[cur] == j+c[j]) { ok = 0; break; } if (ok) search(cur+1); } } } int main() { int n; cin>>n; while(n--) { for (int i=0;i<8;i++) for (int j=0;j<8;j++) cin>>_map[i][j]; maxsum=-1; search(0); cout<<maxsum<<endl; } return 0; }

相關推薦

皇后問題

努比亞和蘇丹沒有子女,所以他要從一些有整合資格的繼承者中挑選一個出來繼承王位。他希望這個繼承者足夠聰明,所以他準備了一個西洋棋盤,上面的每個格子中均有一個 1-991−99 的數字。他又準備了 88 個皇后棋子。 88 皇后的規則就是不能有任何棋子同行或者同列

·數碼問題

【BFS】 初見安~本題選自計蒜客。 Description 八方塊移動遊戲要求從一個含 8 個數字(用 1-8 表示)的方塊以及一個空格方塊(用 0 表示)的 3 × 3 矩陣的起始狀態開始,不斷移動該空格方塊以使其和相鄰的方塊互換,直至達到所定義的目標狀態。空格方塊在中間位置

-題庫-三值排序

pac 一個數 順序 col 裏的 efault 開始 algo div 題目 排序是一種很頻繁的計算任務。一個實際的例子是,當我們給某項競賽的優勝者按金銀銅牌排序的時候。在這個任務中可能的值只有三種1,2和3。我們用交換的方法把他排成升序的。 寫一個程序計算出,計算出的

15430 XOR Queries(Trie處理位運算問題)

ron 二進制 進制 插入 我們 整數 容易 位置 xor 題意: 給出一個長度為n的數組C,回答m個形式為(L, R, A, B)的詢問, 含義為存在多少個不同的數組下標k屬於[L, R]滿足C[k] XOR A >= B(式中XOR為異或運算)。 T組測試數

騰訊課堂的物理實驗(2017初賽第三場)

text ram amp tex 方向 top names rip des A題 在騰訊課堂的物理課上,進行了一個有趣的物理實驗。 在一個長度為 LL 米的光滑軌道上,小車 A 在 00 時刻以 1\mathrm{m/s}1m/s 的速度從左端出發向右運動,小車 B 在

UCloud 的安全秘鑰 (初賽第五場)(待解決)

限制 一行 序列 0ms n) content mes 初賽 -o 20.7% 1200ms 262144K 每個 UCloud 用戶會構造一個由數字序列組成的秘鑰,用於對服務器進行各種操作。作為一家安全可信的雲計算平臺,秘鑰的安全性至關重要。因此,UCloud

UCloud 機房的網絡搭建(初賽第五場)

出口 表示 -s box ace res += 建立 tps UCloud 剛剛建立一個新機房,近日正在進行網絡搭建。機房內有 nn 臺服務器和 mm 個分線器,整個機房只有一個網線出口。分線器的作用是將一根網線轉換成多根網線。蒜頭君也知道每個分線器輸出的最大網線根數(不

第五場 UCloud 的安全秘鑰(中等) (尺取遊標法

sca http 數組 desc 出現 滿足 說明 tom tor 每個 UCloud 用戶會構造一個由數字序列組成的秘鑰,用於對服務器進行各種操作。作為一家安全可信的雲計算平臺,秘鑰的安全性至關重要。因此,UCloud 每年會對用戶的秘鑰進行安全性評估,具體的評估方法如

UCloud 的安全秘鑰 ——(hash)

pan ref namespace mes 能夠 targe com print lower   題目鏈接:https://nanti.jisuanke.com/t/15769。   題意是求可以變換位置以後相同的子串有多少個,那麽做法是只要每個數字的平方和,立方和以及四次

429(騰訊手機地圖-pi的精確值)

sel log 相對 ios cal iss color 什麽 ++ 騰訊手機地圖的定位功能用到了用戶手機的多種信號。這當中有的信號的作用範圍近。有的信號作用的範圍則遠一些。有的信號相對於用戶在不同的方位強度是不同的。有的則是在不論什麽一個方向上信號強度都一

課程學分總數

int ane 題目 scan top const turn fine desc 題目鏈接 課程學分總數 很基礎的樹型DP。註意輸入數據可能是森林而不是完整的一棵樹。 那麽給所有沒有祖先的點加一個公共的根就好了。 #include <bits

[NOIP模擬賽]2017.7.28Day1回顧反思總結

n) 模擬 查詢 同時 結點 reg etc mes 停止 D1T1 打地鼠 題目鏈接 反思- 比賽得分-0 思考: 比賽時,以為T1是一道常規模擬題目,沒怎麽看數據範圍。直接手動模擬,模擬完之後太自信也沒有造數據Hack自己的程序。直接導致爆0。同時發現自己對二

--爬樓梯 (動態規劃)

tle nbsp vector main long 3.1 false n) 方法 假設你現在正在爬樓梯,樓梯有 nn 級。每次你只能爬 11 級或者 22 級,那麽你有多少種方法爬到樓梯的頂部? 輸入格式 第一行輸入一個整數 n(1\leq n \leq 50)n

--兩數之和

lin mod sizeof ons tom owb res fin iomanip 給定一個數組 number_inumber?i??,找到兩個數,使得他們的和為一個給定的數值 targettarget。 其中:number[index_1] + number[in

---線段的總長

col cst scrip type sin logs style ica -a 數軸上有N個點,任意兩點連線得到n(n-1)條線段,試求線段的總長。 輸入格式: 第一行,一個整數N,表示點數。 接下來N行,每行一個整數X_i,表示點的坐標。 輸出格式: 輸出為

---最大質因數

格式 set -s margin style 輸出格式 sam ring -1 給出N個數字,試求質因數最大的數字。 輸入格式: 第一行,一個整數N,表示數字個數。 接下來N行,每行一個整數A_i,表示給出的數字。 輸出格式: 一個整數,表示質因數最大的數字。

16495 Truefriend(fwt)

ios public () eof .cn png pac log typedef #include <iostream> #include <cstring> #include <cstdio> using namespace st

16492 building(二分線段樹/分塊)

sin cst include sqrt ++ building scanf mat math 題解: 考慮用線段樹維護樓的最大值,然後這個問題就很簡單了。 每次可以向左二分出比x高的第一個樓a,同理也可以向右二分出另一個樓b,如果a,b都存在,答案就是b-a-1。 註意到

2017.9.9 Day1 NOIP模擬賽

noip 計蒜客 滾動 不出 傳遞 概率題 線段 暴力 矩陣 火山噴發 概率題目就放在T1,真的好嗎? 廢話不說話,先寫10分的暴力程序。 正解待補 信息傳遞 我寫的floyd+dp(滾動數組優化空間) 50分 正解是 floyd+dp(矩陣快速冪優化)

【推導】17116 2017 ACM-ICPC 亞洲區(西安賽區)網絡賽 C. Sum

數位 std acm-icpc 多少 icp 正整數 cst space 超過 題意:S(x)被定義為x的十進制表示下的數位之和。給你x,讓你找一個正整數k,使得S(kx)能被233整除。k不超過2千位。 由於x不超過1000000,不論x是多少,10000000重復23