匡斌帶你飛 專題一 棋盤問題

2021-08-10 09:32:15 字數 757 閱讀 4623

問題描述:

在乙個給定形狀的棋盤(形狀可能是不規則的)上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。

首先能擺放棋子的地方是固定的,在這些固定的位置找到k個位置放棋子問有多少種放法。

資料量很小所以才敢用dfs???

但是這個題不好想,準確的說是不敢下筆,遍歷的時間花費太高了。。。寫的時候用visit陣列表示這一列是不是被使用過,如果沒有使用過且這一行的這一列是「#」(可以訪問的位置)回溯dfs,回溯法和一般的dfs演算法還是不一樣的,需要重點學習一下,理解倒是不難,不要忘了判斷邊界以及這一行沒東西最後也要dfs一下

以下是**:

#include #include #include #include using namespace std;

int n,k;

char a[10][10];

int visit[10];

int total,m;

void init()

void dfs(int cur)

if(cur >= n)

return;

for(int i = 0; i < n ;i++)

}dfs(cur+1);

}int main()

dfs(0);

printf("%d\n",total);

}return 0;

}

kuangbin帶你飛專題1(搜尋)A 棋盤問題

先上題 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,...

kuangbin專題一簡單搜尋 棋盤問題

原題如下 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開...

kuangbin求帶飛簡單搜尋 棋盤問題

description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,...