這題用dfs來解 dfs函式只有乙個形參,那就是行數,因為題目中說了兩個棋子不能放在乙個棋盤的同一行或同一列,所以,一行只能選乙個能放棋子的位置來放棋子。首先定義乙個陣列,visited用來記錄第i列是否有棋子放入,注意 是第i列。
然後定義乙個全域性變數way來記錄已經往棋盤中放入了多少個棋子了,遞迴的邊界條件就是way等於k;
#includeusing namespace std;
int n,k;
char a[10][10];
int visited[10];//visited陣列記錄在前h-1行第幾列已經放入棋子了
int cont=0;//cont代表種數
int way=0;
void dfs(int h)//h代表行數 way代表選擇放入棋子的個數
if(h>=n)//當所搜尋的行數大於棋盤時 直接返回
return ;
for(int i=0;i>n>>k)
}
virtual Judge 棋盤問題題解
在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將...
題解 dfs之棋盤問題
在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將...
A 棋盤問題
在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將在乙個n n...