題目:
諸侯安置
【問題描述】
很久以前,有乙個強大的帝國,它的國土成正方形狀,如圖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時的國土,陰...