17 棋盤多項式

2021-10-04 16:58:08 字數 1291 閱讀 1257

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的棋盤,我們在一些格仔上摳幾個洞,這些洞自然不能放棋子了,會漏下去的。另外,乙個車本來能攻擊...