POJ - 1321 棋盘问题
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放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*N的棋盘,有的的地方能放,而且不能在一条水平线和竖直线上。
#include<iostream>
#include<queue>
#include<algorithm>
#include<set>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<bitset>
#include<cstring>
#define Swap(a,b) a^=b^=a^=b
#define cini(n) scanf("%d",&n)
#define cinl(n) scanf("%lld",&n)
#define cinc(n) scanf("%c",&n)
#define coui(n) printf("%d",n)
#define couc(n) printf("%c",n)
#define coul(n) printf("%lld",n)
#define speed ios_base::sync_with_stdio(0);//Çв»¿ÉÓÃscnaf£»
#define Max(a,b) a>b?a:b
#define Min(a,b) a<b?a:b
using namespace std;
typedef long long ll;
const int N = 10;
int n,k;
int flag[N];
char a[N][N];
queue<int>q;
int cnt,ans;
void dfs(int x)
{if(x==n+1) return ;for(int i=1;i<=n;i++){if(a[x][i-1]=='#'&&flag[i]==0){flag[i]=1;cnt++;if(cnt==k) ans++;dfs(x+1);cnt--;flag[i]=0;}}dfs(x+1);
}int main()
{while(cin>>n>>k){cnt=0;ans=0;if(n==-1||k==-1)break;for(int i=1;i<=n;i++){cin>>a[i];}/* for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){cout<<a[i][j]<<' ';}cout<<endl;}*/dfs(1);cout<<ans<<endl;}}
POJ - 1321 棋盘问题相关推荐
- POJ 1321 棋盘问题(回溯)
文章目录 1. 题目 1.1 题目链接 1.2 题目大意 1.3 解题思路 2. 代码 2.1 Accepted 代码 1. 题目 1.1 题目链接 http://poj.org/problem?id ...
- poj 1321 棋盘问题(dfs)
题目:http://poj.org/problem?id=1321 没什么难度,比较水... View Code 1 #include <iostream> 2 #include<c ...
- POJ 1321 棋盘问题【DFS】
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35493 Accepted: 17485 Descriptio ...
- POJ 1321 棋盘问题 搜索
Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...
- POJ 1321 棋盘问题 题解
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 70224 Accepted: 33254 Description 在一 ...
- 深度优先搜索----poj 1321棋盘问题
题目描述 棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 63237 Accepted: 30234 Descr ...
- POJ 1321 棋盘问题(DFS 状压DP)
用DFS写当然很简单了,8!的复杂度,16MS搞定. 在Discuss里看到有同学用状态压缩DP来写,就学习了一下,果然很精妙呀. 状态转移分两种,当前行不加棋子,和加棋子.dp[i][j]中,i代表 ...
- A - 棋盘问题 POJ - 1321(dfs)
A - 棋盘问题 POJ - 1321 dfs 复杂度计算: dfs共进行a步,每步需要循环n次,复杂度为 a^n次方 首先是暴力 an*n,果然炸了 #include<cstdio> # ...
- 棋盘问题 POJ - 1321
题目 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方 ...
最新文章
- 项目中的textarea遇到的小问题
- Hive(四)——数据操作
- 推荐三款U盘烧写工具
- 超级玛丽java版下载jar文件_java超级玛丽混搭版jar
- 新浪邮箱服务器密码被盗,邮箱密码盗取严重的注意事项以及处理建议
- chia币新协议矿池搭建教程
- PrinTao CANON Home Studio Edition 8.0r12 17 Mac 佳能专业打印软件
- 华为OD机试题:黑板上的数涂颜色
- 中国“千禧一代”是一群什么样的消费者?
- CSDN文章如何迁移至微信公众号
- MuleSoft知识总结-11.Mule基本组件(Transform Message)
- 怎么理解CRM客户关系管理系统?
- 辣椒籽的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 静态HTML网页设计作品——棋牌游戏(8页) HTML+CSS+JavaScript web大作业 静态网页
- Monkey 简介操作
- 网上商城电子购物网站
- s 标签 遍历 list 数组
- super与 this
- html点击图片产生事件,javascript里怎么实现点击图片弹出对话框?
- 小米路由器3G刷固件Padavan_小米路由器3G刷Breed
热门文章
- Android开发之百度地图定位以及简单覆盖物的实现
- 计算a b python_你知道Python中a = b和a = a b的结果是不一样的吗?
- mkfs -t ext3 错误/dev/sdxx is apparently in use by the system; 解决方法
- easyui combobox默认选中项
- unit 10计算机英语教程,计算机英语实用教程Unit 10.doc
- 利用MATLAB进行系统时域分析,实验二 利用matlab进行系统的时域分析
- oracle处理回车换行符
- textarea 通过 json在各浏览器的显示回车换行的问题
- Adobe AIR for html/js人员
- js 递归编程要注意的:return