問題描述:
分析
行走策略:從第0行開始,在此行放個棋子然後走下一行,或者跳過此行直接走下一行。
邊界條件:走至第n行,或k個棋子放完。
剛開始想的思路實現起來特別複雜,參考了網上的,簡單清晰的方法往往是最好的。
原始碼
#include
#include
using
namespace
std;
char grid[8][8];
bool flag[8];
int n;
int res;
void dfs(int row, int k)
if (row>=n)
for (int col=0; colif (!flag[col] && grid[row][col]=='#')
}dfs(row+1, k); //跳過此行
}int main()
memset(grid, '.', sizeof(grid));
for (int i=0; ifor (int j=0; jcin >> grid[i][j];
memset(flag, 0, sizeof(flag));
res = 0;
dfs(0, k);
cout
<< res << endl;
}return
0;}
做練習 棋盤問題(深度優先搜尋)
總時間限制 1000ms 記憶體限制 65536kb 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。輸入含有多組測試資料。每組資料的第一行是兩...
POJ 1321 棋盤問題 深度優先搜尋
棋盤問題 time limit 1000ms memory limit 10000k total submissions 60983 accepted 29214 description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同...
深度優先搜尋 poj 1321棋盤問題
題目描述 棋盤問題 time limit 1000ms memory limit 10000k total submissions 63237 accepted 30234 description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在...