文章标题 POj 1321:棋盘问题(DFS)
来源:互联网 发布:无糖可乐会发胖吗 知乎 编辑:程序博客网 时间:2024/06/16 12:54
棋盘问题
Description
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。
Input
输入含有多组测试数据。
每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n
当为-1 -1时表示输入结束。
随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。
Output
对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证C<2^31)。
Sample Input
2 1
#.
.#
4 4
…#
..#.
.#..
#…
-1 -1
Sample Output
2
1
题意:在一个给定的棋盘上,形状可能不规则,#为可放置的地方,先给一个n*n的棋盘,和k个棋子,将k个棋子放进棋盘中,要求出每个棋子互不相邻的可能数。
分析:由题目给出n和k的范围,可以直接dfs求解,定义一个map【10】【10】存放棋盘,flag【10】为该列是否已经被放进棋盘。注意放棋子时得看是否为合法区域,即是否为#的区域切周围没有其他棋子。
#include<iostream>#include<string>#include<cstdio>#include<cstring>#include<vector>#include<math.h>#include<queue> #include<algorithm>using namespace std;int n,k;char map[10][10];int flag[10];//判断列有没有棋子 int ans,num;//ans 计数,num 放置棋子数目; //int count;void dfs(int now){ if (num==k){//返回的条件 ans++; return; } if (now>=n)return; for (int j=0;j<n;j++){ if (map[now][j]=='#'&&!flag[j]){ flag[j]=1;//放置棋子 ,标记 num++;//棋子数目+1 dfs(now+1);//取回棋子 flag[j]=0;//取消标记 num--;//把棋子数目复原 } } dfs (now+1);//now行没放置棋子 }int main (){ while (scanf ("%d%d",&n,&k)!=EOF){ if (n==-1&&k==-1)break; memset (flag,0,sizeof (flag)); for (int i=0;i<n;i++){ for (int j=0;j<n;j++){ cin>>map[i][j]; } } ans=0; num=0; dfs(0); printf ("%d\n",ans); } return 0;}
0 0
- 文章标题 POj 1321:棋盘问题(DFS)
- POJ 1321 棋盘问题(棋盘DFS)
- POJ 1321 棋盘问题(DFS+回溯)
- poj 1321 棋盘问题 (DFS )
- POJ 1321 棋盘问题(DFS)
- poj 1321 棋盘问题(DFS)
- poj 1321 棋盘问题(dfs,回溯)
- poj 1321 棋盘问题(dfs)
- POJ 1321-棋盘问题(DFS)
- Poj 1321 棋盘问题 (DFS水题)
- POJ 题目1321 棋盘问题(DFS)
- POJ 1321 棋盘问题(dfs)
- POJ 1321 棋盘问题(dfs)
- POJ 1321 棋盘问题 (DFS)
- POJ 1321 棋盘问题 (DFS)
- 【POJ】1321 - 棋盘问题(dfs)
- POJ 1321 棋盘问题(dfs)
- POJ 1321 棋盘问题(DFS)
- Android的使用AnimationListener监听动画,手机管家界面设计
- mysql中的四种模糊查询
- android activity 隐藏标题
- 微信红包架构
- 图片三级缓存
- 文章标题 POj 1321:棋盘问题(DFS)
- 北航保研面试回忆总结
- node.js学习笔记(10)--mysql模块连接mysql数据库
- 从库框架到模块化再到使用自己独立开发的库和框架
- opensuse linux配置支持ssh及xmanager登录
- java8 Lambda 与 Stream
- 动态自动匹配
- 【2016】七月份英语学习总结
- Android 开发的 RxJava 详解