17 棋盤多項式
問題描述 :
八皇后問題是在棋盤上放皇后,互相不攻擊,求方案。變換一下棋子,還可以有八車問題,八馬問題,八兵問題,八王問題,注意別念反。在這道題裡,棋子換成車,同時棋盤也得換,確切說,是進行一些改造。比如現在有一張n*n的棋盤,我們在一些格仔上摳幾個洞,這些洞自然不能放棋子了,會漏下去的。另外,乙個車本來能攻擊和它的同行同列。現在,你想想,在攻擊的過程中如果踩到乙個洞,便會自取滅亡。故,車的攻擊範圍止於洞。
此題,給你棋盤的規模n,以及挖洞情況,求放k個車的方案數(k從0到最多可放車數)
輸入說明 :
第一行乙個整數n表示棋盤大小
接下來n行,每行n個用空格隔開的數字0或1,0的形狀表示洞,1表示沒有洞
資料規模和約定
n<=8
輸出說明 :
若干行,第i行表示放i個車的方案數
輸入範例 :31 0 1
1 1 1
1 0 1
輸出範例 :712
4
#include
#include
#define n 8
int a[n]
[n];
//0:洞 1:可以放置 2:已經放置
int ans[n*n]
;int n;
//掃瞄當前座標左邊四周,是否存在可以放置的點
intislegal
(int x,
int y)
int i;
//上for
(i=x-
1;i>=
0;i--
)//下
for(i=x+
1;i)//左
for(i=y-
1;i>=
0;i--
)//右
for(i=y+
1;i)return1;
}void
dfs(
int num,
int sum)
int x=num/n;
//對應的是行 比如num=n,則x為第一行 y為第一行對應列
int y=num%n;
//對應的是列if(
islegal
(x,y)
)dfs
(num+
1,sum);}
intmain()
}dfs(0
,0);
for(
int j=
1;jreturn0;
}
演算法提高 棋盤多項式
問題描述 八皇后問題是在棋盤上放皇后,互相不攻擊,求方案。變換一下棋子,還可以有八車問題,八馬問題,八兵問題,八王問題,注意別念反。在這道題裡,棋子換成車,同時棋盤也得換,確切說,是進行一些改造。比如現在有一張n n的棋盤,我們在一些格仔上摳幾個洞,這些洞自然不能放棋子了,會漏下去的。另外,乙個車本...
藍橋杯 演算法提高 棋盤多項式
演算法提高 棋盤多項式 時間限制 1.0s 記憶體限制 256.0mb 棋盤多項式 問題描述 八皇后問題是在棋盤上放皇后,互相不攻擊,求方案。變換一下棋子,還可以有八車問題,八馬問題,八兵問題,八王問題,注意別念反。在這道題裡,棋子換成車,同時棋盤也得換,確切說,是進行一些改造。比如現在有一張n n...
JakeLin 藍橋杯 棋盤多項式 題解
八皇后問題是在棋盤上放皇后,互相不攻擊,求方案。變換一下棋子,還可以有八車問題,八馬問題,八兵問題,八王問題,注意別念反。在這道題裡,棋子換成車,同時棋盤也得 換,確切說,是進行一些改造。比如現在有一張n n的棋盤,我們在一些格仔上摳幾個洞,這些洞自然不能放棋子了,會漏下去的。另外,乙個車本來能攻擊...