POJ 1321 棋盘问题(深搜)
2015-08-23 20:41
337 查看
题目链接:
http://poj.org/problem?id=1321
解题思路:
思路在代码里写的很清楚了。。。
AC代码:
http://poj.org/problem?id=1321
解题思路:
思路在代码里写的很清楚了。。。
AC代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int n,m; char node[10][10]; int vis[10]; int ans; void dfs(int row,int sum){ if(sum == m){ ans++; return; } if(row > n) return; for(int j = 1; j <= n; j++){ if(node[row][j] == '#' && !vis[j]){ vis[j] = 1; dfs(row+1,sum+1); vis[j] = 0; } } dfs(row+1,sum); //这步很关键,想上去了,这题就成了水题,想不上去的话。。。 //当k<n时,row在等于n之前就可能已经把全部棋子放好 //又由于当全部棋子都放好后的某个棋盘状态已经在前面循环时记录了 //因此为了处理多余行,令当前位置先不放棋子,搜索在下一行放棋子的情况 } int main(){ while(~scanf("%d%d",&n,&m)){ if(n+m < 0) break; for(int i = 1; i <= n; i++) scanf("%s",node[i]+1); ans = 0; memset(vis,0,sizeof(vis)); dfs(1,0); printf("%d\n",ans); } return 0; }
相关文章推荐
- [GDOI模拟2015.08.18]解密
- C/C++头文件注释
- 坚持不懈之linux haproxy 配置文件 详情
- windows 10 设置
- 位扩展和位截断
- [LeetCode] Search a 2D Matrix(二分查找)
- 不错的文章
- linux-fdisk/mke2fs/dumpe2fs/fsck
- linux内核移植和根文件系统制作(三)
- 安卓开发笔记二——软键盘弹出不遮挡布局的策略
- Selenium学习---(三)
- Mysql与Oracle区别
- 求某正整数重新打乱后最大数与最小数的差值
- 求二进制数中1的个数
- java基础-API-集合框架-Collection
- 指向数组的指针
- Linux下文本常用处理技巧
- HDU 杭电2501 Tiling_easy version【规律题】
- 【分享】もっと 姉、ちゃんとしようよっ!+アフターストーリー 【日文硬盘版】(带全CG存档&日文攻略
- 华为数字芯片工程师实习生面试全过程