POJ-1321 棋盘问题 搜索
2012-07-13 15:30
337 查看
非常简单的一道搜索题,用状态压缩加DP写了一上午,写道后面越来越感觉这题状态压缩没有什么优势,每一行都与前面的行的排列有关系,因此不能够记忆化,没算完一次要把状态清空,可惜到最后还是错了。干脆直接暴力搜索。就这样过了。
代码如下:
代码如下:
#include <cstring> #include <cstdlib> #include <cstdio> #include <algorithm> using namespace std; int N, K, hash_x[10], hash_y[10], ans; char G[10][10]; void dfs(int x, int y, int k) { if (k == 0) { ++ans; } for (int i = x+1; i <= N; ++i) { for (int j = 1; j <= N; ++j) { if (!hash_x[i] && !hash_y[j] && G[i][j] == '#') { hash_x[i] = 1, hash_y[j] = 1; dfs(i, j, k-1); hash_x[i] = hash_y[j] = 0; } } } } int main() { while (scanf("%d %d", &N, &K), N!=-1||K!=-1) { ans = 0; memset(hash_x, 0, sizeof (hash_x)); memset(hash_y, 0, sizeof (hash_y)); for (int i = 1; i <= N; ++i) { scanf("%s", G[i]+1); } for (int i = 1; i <= N; ++i) { for (int j = 1; j <= N; ++j) { if (G[i][j] == '#') { hash_x[i] = 1, hash_y[j] =1; dfs(i, j, K-1); hash_x[i] = hash_y[j] = 0; } } } printf("%d\n", ans); } } /* 8 4 .##.###.. .##...#.. ..##..#.. .##..#.. ..#.###.. .##..##.. .#.#..#.. .##.#.#.. 2907 */
相关文章推荐
- poj 1321棋盘问题(简单搜索)
- POJ 1321棋盘问题(简单搜索)
- POJ 1321 棋盘问题类似八皇后 dfs搜索
- poj 1321棋盘问题(简单搜索)
- POJ 1321-棋盘问题【简单搜索】
- 【kuangbin带你飞】之【搜索】 poj1321 棋盘问题
- POJ - 1321 棋盘问题 [kuangbin带你飞]专题一 简单搜索
- POJ - 1321 棋盘问题 dfs分层搜索(n皇后变式)
- POJ 1321棋盘问题(简单搜索dfs回溯)
- POJ 1321-棋盘问题 简单搜索DFS
- poj 1321 棋盘问题 搜索
- POJ 1321-棋盘问题-简单搜索DFS
- POJ1321棋盘问题 搜索基础题
- poj1321--棋盘问题(搜索练习2,变形的八皇后问题)
- POJ-1321 棋盘问题 解题报告(搜索) 棋盘问题
- poj 1321棋盘问题(搜索)
- 【简单搜索】POJ1321棋盘问题
- POJ1321棋盘问题【搜索】
- [kuangbin带你飞]专题一 简单搜索 - A - 棋盘问题 POJ - 1321
- POJ 1321 经典棋盘问题 的搜索和状态压缩解法