棋盘问题:dfs
Description
Input
每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n
当为-1 -1时表示输入结束。
随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。
Output
Sample Input
2 1
#.
.#
4 4
...#
..#.
.#..
#...
-1 -1
Sample Output
2
1
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int n, k,cnt=0;
int book[10]; //标记每列
char a[10][10];
void dfs(int x,int ans) { //按行搜索,x代表行数,ans代表剩余棋子
if (ans == 0) { cnt++; return; }
if (x == n + 1)return;
for (int i = 1; i <= n; i++) { //枚举这一行的每个元素
if (a[x][i] == '#'&&book[i] == 0) {
book[i] = 1;
dfs(x + 1, ans - 1);
book[i] = 0;
}
}
dfs(x + 1, ans); //可能会不标记第x行,所以跨过
return;
}
int main() {
while (cin >> n >> k) { if (n == -1 && k == -1)return 0; cnt = 0; //初始化
memset(a, 0, sizeof(a)); //头文件<string.h>
memset(book, 0, sizeof(book)); for (int i = 1; i <= n; i++) { //读入地图
for (int j = 1; j <= n; j++) {
cin >> a[i][j];
}
} dfs(1,k); cout << cnt << "\n";
}
return 0;
}
棋盘问题:dfs的更多相关文章
- POJ 1321 棋盘问题 --- DFS
		POJ 1321 题目大意:给定一棋盘,在其棋盘区域放置棋子,需保证每行每列都只有一颗棋子. (注意 .不可放 #可放) 解题思路:利用DFS,从第一行开始依次往下遍历,列是否已经放置棋子用一个数组标 ... 
- POJ 1321 棋盘问题(DFS板子题,简单搜索练习)
		棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44012 Accepted: 21375 Descriptio ... 
- POJ 1321 棋盘问题 DFS 期末前水一水就好……
		A - 棋盘问题 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Sta ... 
- 2015 百度之星  1003 棋盘占领 dfs
		棋盘占领 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_show ... 
- 【bzoj4813】[Cqoi2017]小Q的棋盘  树上dfs+贪心
		题目描述 小Q正在设计一种棋类游戏.在小Q设计的游戏中,棋子可以放在棋盘上的格点中.某些格点之间有连线,棋子只能在有连线的格点之间移动.整个棋盘上共有V个格点,编号为0,1,2…,V-1,它们是连通的 ... 
- (比赛)B - 棋盘问题(dfs)
		B - 棋盘问题 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%lld & %llu Practice POJ ... 
- POJ - 1321 棋盘问题 dfs分层搜索(n皇后变式)
		棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 47960 Accepted: 23210 Descriptio ... 
- POJ1321 棋盘问题  —— DFS回溯
		题目链接:http://poj.org/problem?id=1321 棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions ... 
- 棋盘问题(dfs)
		http://poj.org/problem?id=1321 思路:按行搜索,回溯时还原棋盘. #include <stdio.h> #include <string.h> ] ... 
- POJ 1321 棋盘问题 DFS搜索
		简单搜索 练习一下回溯 #include <iostream> #include <cstdio> #include <cstring> #include < ... 
随机推荐
- Python 学习笔记(十一)Python语句(二)
			For 循环语句 基础知识 for循环可以遍历任何序列的项目,如一个列表或者一个字符串. 语法: for 循环规则: do sth >>> for i in "python ... 
- java SSM 框架  代码生成器 websocket即时通讯 shiro redis
			1. 权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限 角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限. 按钮权限: 给角色分配按钮权限. ... 
- python3 基于tcp  简单client和server
			客户端代码 from socket import * #客户端 client=socket(AF_INET,SOCK_STREAM) #通讯地址 client.connect(('172.18.100 ... 
- jdk8新特性之双冒号 :: 用法及详解
			jdk8的新特性有很多,最亮眼的当属函数式编程的语法糖,本文主要讲解下双冒号::的用法. 概念 类名::方法名,相当于对这个方法闭包的引用,类似js中的一个function.比如: Function& ... 
- UIButtonType各个类型的解释:
			UIButtonType各个类型的解释: typedef NS_ENUM(NSInteger, UIButtonType) { UIButtonTypeCustom = , UIButtonTypeS ... 
- OCR
			谷歌OCR光学字符识别窥探 - 简书 Tesseract OCR初探 利用Tesseract图片文字识别初探 _ TonyDeng's Blog Tesseract OCR(光学字符识别)教程 - C ... 
- struts2-笔记
			文件下载http://struts.apache.org/download.cgi 第一步导入jar 包 在lib中有jar 包,不能把这些都导入到项目中 在apps 目录里面,找到实例程序,程序中直 ... 
- vue移动端项目vw适配运行项目时出现"advanced"报错解决办法。
			Module build failed: Error: Cannot load preset "advanced". Please check your configuration ... 
- Linux 只显示目录或者文件方法
			ls 参数 -a 表示显示所有文件,包含隐藏文件-d 表示显示目录自身的属性,而不是目录中的内容-F 选项会在显示目录条目时,在目录后加一个/ 只显示目录 方法一: find . -type d -m ... 
- IDEA中使用单元测试@Test等,提示没有 Junit.jar包
			1.File-->Project Structure-->Modules-->右侧Dependencies-->+号-->JARs or directories... 2 ... 
