題目傳送門
題目描述
在 n×n 的棋盤上放 k 個國王,國王可攻擊相鄰的 8 個格仔,求使它們無法互相攻擊的方案總數。
輸入格式
共一行,包含兩個整數 n 和 k。
輸出格式
共一行,表示方案總數,若不能夠放置則輸出00。
資料範圍
1 ≤ n ≤ 10輸入樣例:0 ≤ k ≤ n^2
3 2輸出樣例:題解:
狀態壓縮dp:
dp[ i ] [ j ] [ k ]表示第 i 行,狀態為 j , 放國王的個數為k時的方案數
其中j用二進位制表示, 1表示該位置上放國王,0表示該位置上不放國王
#include
using namespace std;
const
int n =12;
typedef
long
long ll;
ll d[12]
[1<< n]
[110];
int n, m;
int num[
1<< n]
, temp[
1<< n]
;int
get_ones
(int x)
return cnt;
}int
main()
d[0]
[0][
0]=1
;for
(int i =
1; i <= n; i++)}
}}ll ans =0;
for(
int i =
0; i < t; i++
)//輸出所有狀態的總和
ans +
= d[n]
[i][m]
; cout << ans << endl;
return0;
}
ACwing1064小國王 互不侵犯
題目描述 在 n times n 的棋盤上放 k 個國王,國王可攻擊相鄰的 8 個格仔,求使它們無法互相攻擊的方案總數。輸入格式 共一行,包含兩個整數 n 和 k 輸出格式 共一行,表示方案總數,若不能夠放置則輸出 0 資料範圍 1 le n le 10 0 le k le n 2 輸入樣例 3 2...
loj 10170騎士 狀壓DP
在n n 1 n 10 的棋盤上放k 0 k n n 個國王 可攻擊相鄰的8 個格仔 求使它們無法互相攻擊的方案總數。輸入檔案僅一行為兩個整數n和k。輸出檔案僅一行為方案總數,若不能夠放置則輸出0。3 2 樣例輸入2 4 4 樣例輸出2 79一眼狀壓,用1表示國王 話說真的不知道這個翻譯在幹什麼,到...
AcWing92 dfs 遞迴 狀壓
題目描述 從 1 n 這 n 個整數中隨機選取任意多個,輸出所有可能的選擇方案。輸入格式 輸入乙個整數n。輸出格式 每行輸出一種方案。同一行內的數必須公升序排列,相鄰兩個數用恰好1個空格隔開。對於沒有選任何數的方案,輸出空行。本題有自定義校驗器 spj 各行 不同方案 之間的順序任意。資料範圍 1 ...