問題描述:
在乙個給定形狀的棋盤(形狀可能是不規則的)上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放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,...