諸侯安置(暴力搜尋)

2021-07-15 17:00:03 字數 906 閱讀 6365

題目:

諸侯安置

【問題描述】

很久以前,有乙個強大的帝國,它的國土成正方形狀,如圖1 所示

這個國家有若干諸侯。由於這些諸侯都曾立下赫赫戰功,國王準備給他們每人一塊封地

(正方形中的一格)。但是,這些諸侯又非常好戰,當兩個諸侯位於同一行或同一列時,他們

就會開戰。如下圖2 為n=3 時的國土,陰影部分表示諸侯所處的位置。前兩幅圖中的諸侯可

以互相攻擊,第三幅則不可以。

國王自然不願意看到他的諸侯們互相開戰,致使國家動盪不安。因此,他希望通過

合理的安排諸侯所處的位置,使他們兩兩之同都不能攻擊。

現在,給出正方形的邊長n,以及需要封地的諸侯數量k,要求你求出所有可能的安置

方案數。(n≤100,k≤2n2-2n+1)

由於方案數可能很多,你只需要輸出方案數除以504 的餘數即可。

【輸入】

僅一行,兩個整數n 和k,中閽用一空格隔開。

【輸出】

乙個整數,表示方案數除以504 的餘數。

【樣例】

empire.in empire.out

2 2 4

#include#include#includeusing namespace std;

int n,m,ans = 0;

int a[105];

void init()

void dfs(int p,int now)

if(p == n*2)return;//當行到n*2時返回

dfs(p+1,now);//先遞迴到最後一層,在返回是進行搜尋,方便計算列的區間

for(int i = 1+abs(n-p);i <= 2*n-1-abs(n-p); i++) }}

int main()

諸侯安置 搜尋02 empire

這道題目的第一感覺肯定是很像八皇后!可是它並不是八後所以我們需要使用一種逆向思維去思考!題目大家應該都知道了,我就不講了,這裡主要講思路 重新描述一下問題,其實就是在乙個邊長為 2n 1 的正菱形 如上左圖為 n 3的情形 上擺放 k 個棋子,使得任意兩個棋子都不在同一行 同一列。試問 這樣的擺法共...

諸侯安置DP做法

這幾天考試,在考試中有這樣一道題叫 諸侯安置 沒過,但事後改對了。題目 諸侯安置 問題描述 很久以前,有乙個強大的帝國,它的國土成正方形狀,如圖1 所示 這個國家有若干諸侯。由於這些諸侯都曾立下赫赫戰功,國王準備給他們每人一塊封地 正方形中的一格 但是,這些諸侯又非常好戰,當兩個諸侯位於同一行或同一...

諸侯安置 簡單的遞推

problem description 很久以前,有乙個強大的帝國,它的國土呈正方形狀 45度看 如圖所示。這個國家有若干諸侯。由於這些諸侯都曾立下赫赫戰功,國王準備給他們每人一塊封地 正方形中的一格 但是,這些諸侯又非常好戰,當兩個諸侯位於同一行或同一列時,他們就會開戰。如下圖為n 3時的國土,陰...