博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-1321 棋盘问题 搜索
阅读量:6799 次
发布时间:2019-06-26

本文共 1366 字,大约阅读时间需要 4 分钟。

  非常简单的一道搜索题,用状态压缩加DP写了一上午,写道后面越来越感觉这题状态压缩没有什么优势,每一行都与前面的行的排列有关系,因此不能够记忆化,没算完一次要把状态清空,可惜到最后还是错了。干脆直接暴力搜索。就这样过了。

代码如下:

#include 
#include
#include
#include
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*/

转载于:https://www.cnblogs.com/Lyush/archive/2012/07/13/2590329.html

你可能感兴趣的文章
SVM支持向量机
查看>>
Asymptote 学习记录(2):例子阅读
查看>>
《常微分方程教程》习题2-2,4:一个跟踪问题
查看>>
陶哲轩实分析例17.2.3
查看>>
兩個集合之間的全體部分函數可以形成一個集合
查看>>
Elementary Methods in Number Theory Exercise 1.2.17
查看>>
认识拨号计划 - Dialplan
查看>>
DataTable 的数据导出到 Excel
查看>>
委托由浅入深学习
查看>>
BZOJ 1012 [JSOI2008]最大数maxnumber
查看>>
权限管理[Linux]
查看>>
unity3d优化总结篇(二)
查看>>
自定义view,实现文本自动换行
查看>>
查看网页自动保存的密码
查看>>
【题解】【区间】【二分查找】【Leetcode】Insert Interval & Merge Intervals
查看>>
Hello,C++(7)函数模板和类模板
查看>>
网站使用https协议
查看>>
git 使用
查看>>
对软件工程的一点认识
查看>>
似然函数的概念【转载】
查看>>