POJ 1321:棋盘问题
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 21666 | Accepted: 10765 |
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
深搜。
注意k<n的处理。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream> using namespace std; int n , k;
int chess[10][10];
int vist[10];
int ans; void dfs(int x, int num)
{
if(num==k)
{
ans++;
return ;
}
if(x>n)
return ;
for(int i=1; i<=n; i++)
{
if(chess[x][i]==1 && vist[i]==0)
{
vist[i]=1;
dfs(x+1, num+1);
vist[i]=0; //回溯后还原数据
}
}
dfs(x+1, num);
} int main()
{
char str;
while(scanf("%d%d", &n, &k)!=EOF)
{
memset(chess, 0, sizeof(chess));
memset(vist, 0, sizeof(vist));
ans=0;
if(n==-1 && k==-1)
break;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
cin>>str;
if(str=='#')
chess[i][j]=1;
}
dfs(1, 0);
cout<<ans<<endl;
} return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream> using namespace std; #define max 100 char map[max][max];
int s[max];
int n,k,i,j,a; void dfs(int x,int y) //函数參量表示的意思:x表示该棋盘的第x行,y表示放置第y个棋子
{
int i,j;
if(y==k) // 递归边界
a++;
else
{
for(i=x+1;i<=n;i++) // 按行讨论
{
for(j=1;j<=n;j++) // 从1 到 n列
{
if( map[i][j]=='#' && !s[j] ) // 若该点是 '#'且该点的这一列没有旗子。则能够在该位置放棋子。 {
s[j]=1;
dfs(i,y+1);
s[j]=0;
}
}
}
}
} int main ()
{ while (~scanf("%d%d",&n,&k)&&n!=-1&&k!=-1)
{
a=0;
memset(s,0,sizeof(s));
getchar(); //
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
scanf("%c",&map[i][j]);
getchar(); //
}
dfs(0,0);
printf("%d\n",a);
}
return 0;
}
POJ 1321:棋盘问题的更多相关文章
- POJ 1321 棋盘问题 --- DFS
POJ 1321 题目大意:给定一棋盘,在其棋盘区域放置棋子,需保证每行每列都只有一颗棋子. (注意 .不可放 #可放) 解题思路:利用DFS,从第一行开始依次往下遍历,列是否已经放置棋子用一个数组标 ...
- DFS POJ 1321 棋盘问题
题目传送门 /* DFS:因为一行或一列都只放一个,可以枚举从哪一行开始放,DFS放棋子,同一列只能有一个 */ #include <cstdio> #include <algori ...
- POJ 1321 棋盘问题(C)回溯
Emmm,我又来 POJ 了,这题感觉比上次做的简单点.类似皇后问题.但是稍微做了一点变形,比如棋子数量是不定的.棋盘形状不在是方形等等. 题目链接:POJ 1321 棋盘问题 解题思路 基本思路:从 ...
- OpenJudge/Poj 1321 棋盘问题
1.链接地址: http://bailian.openjudge.cn/practice/1321 http://poj.org/problem?id=1321 2.题目: 棋盘问题 Time Lim ...
- POJ 1321 棋盘问题(DFS板子题,简单搜索练习)
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44012 Accepted: 21375 Descriptio ...
- POJ 1321 - 棋盘问题 - [经典DFS]
题目链接:http://poj.org/problem?id=1321 Time Limit: 1000MS Memory Limit: 10000K Description 在一个给定形状的棋盘(形 ...
- poj 1321 棋盘问题 递归运算
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 19935 Accepted: 9933 Description ...
- poj 1321 棋盘问题 简单DFS
题目链接:http://poj.org/problem?id=1321 很久没有敲搜索了啊,今天敲了个水题练练手,哈哈.... 题目大意: 就是求在n*n的方格上放置k个棋子的方案数 代码: #inc ...
- POJ 1321 棋盘问题(状态压缩DP)
不总结的话, 同一个地方会 WA 到死 思路: 状态压缩 DP. 1. s 表示压缩状态, 若第 i 列放了棋子, 那么该列置 1, 否则该列置 0. 假如 s = 3(0x011) 那么表示棋盘的第 ...
- POJ 1321 棋盘问题 dfs 难度:0
http://poj.org/problem?id=1321 注意是在'#'的地方放棋子 矩阵大小不过8*8,即使是8!的时间复杂度也足以承受,可以直接dfs求解 dfs时标注当前点的行和列已被访问, ...
随机推荐
- linux 编译win32程序
apt-get install mingw32 int main(int argc, char *argv) { printf("Windows Compiler Test\n") ...
- 神经网络可以拟合任意函数的视觉证明A visual proof that neural nets can compute any function
One of the most striking facts about neural networks is that they can compute any function at all. T ...
- POJ 1740:A New Stone Game
A New Stone Game Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5113 Accepted: 2806 Desc ...
- GPGPU OpenCL Reduction操作与group同步
Reduction操作:规约操作就是由多个数生成一个数,如求最大值.最小值.向量点积.求和等操作,都属于这一类操作. 有大量数据的情况下,使用GPU进行任务并行与数据并行,可以收到可好的效果. gro ...
- CentOS7下命令安装火狐浏览器
使用命令安装火狐浏览器,需要切换root(su root)下,执行下面的命令,自动下载所需依赖包,完成安装 yum -y install firefox 然后重启即可
- IIs 中运行asp程序出现“An error occurred on the server when processing the URL. Please contact the system administrator.”错误
在个人的win08系统上使用IIs运行 asp程序结果出现了以下错误 An error occurred on the server when processing the URL. Please c ...
- C#返回多个参数 ref及out
out 关键字会导致参数通过引用来传递.这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化.若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字.例如 ...
- <c:redirect>标签的使用
<c:redirect>标签的使用代码例子 redirect.jsp <%@ page contentType="text/html" pageEncoding= ...
- 查看cache中消耗性能的语句
sqlserver服务器内存偏高,查看下cache中sql消耗情况! /* 查询cache中的语句 说明:可以根据类型.用户数.大小查询 */ ) declare @usecounts int dec ...
- android 使用AChartEngine 饼图的实现
1.AChartEngine 简介 AChartEngine是为Android应用而设计的绘图工具库.可用于绘制多种图表,我使用的是achartengine-1.1.0.jar.ChartEngine ...