POJ 1321
http://poj.org/problem?id=1321
一道深搜的题目,和那个POJ3740有点相类似。
也是到了现在我才知道原来深搜也有几种套路的,以前我的都是用队列来做,那个是不需要记住什么的,只需要标记就行,但现在的做的都好像与路径有点关系。需要用到回溯,这让我还是有点懵的。
题目是中文题。就是在棋盘放置棋子,但那个每一行每一列只可以放一个棋子。且只可以放在#的位置,求一共有多少种放法。
Memory:312K c++ runtime:32MS
1 #include <stdio.h>
#include <string.h>
#include <queue> char str[][];
int m,k,ans;
int used[]; //用来记录那一列是不是放了棋子的。 int dfs(int row,int num) //row代表行,num代表有还有多少个棋子需要放
{
for(int j=;j<m;j++) //循环找出这一行一共有几个地方可以放
{
if(str[row][j]=='#'&&!used[j]){
if(num==) //如果还有最后一个棋子了。那么答案就就加一。
ans++;
else{
used[j]=; //如果还有多个,首先假设使用了这一个棋子,然后在进行下一步的试探,看这个是不是可用
for(int i=row+;i<m;i++)
dfs(i,num-);
used[j]=;
}
}
}
} int main()
{
while(scanf("%d%d",&m,&k)&&(m!=-||k!=-))
{
for(int i=;i<m;i++)
scanf("%s",str[i]);
ans=;
memset(used,,sizeof(used));
for(int i=;i<m;i++)
dfs(i,k);
printf("%d\n",ans);
}
}
POJ 1321的更多相关文章
- 【DFS】POJ 1321
POJ 1321 棋盘问题 题意:中文题不解释. 思路:经典DP,比较取巧的想法是一行行(按照题目意思一行最多只能放一个)来看,标记一列列.注意考虑到有些行可能不放的情况. /** Sample In ...
- POJ 1321 简单dfs
1.POJ 1321 棋盘问题 2.总结: 题意:给定棋盘上放k个棋子,要求同行同列都不重. #include<iostream> #include<cstring> #in ...
- 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
题目链接:http://poj.org/problem?id=1321 很久没有敲搜索了啊,今天敲了个水题练练手,哈哈.... 题目大意: 就是求在n*n的方格上放置k个棋子的方案数 代码: #inc ...
- 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 在一个给定形状的棋盘(形 ...
随机推荐
- Nginx限制某个IP同一时间段的访问次数
nginx可以通过HttpLimitReqModul和HttpLimitZoneModule配置来限制ip在同一时间段的访问次数. HttpLimitReqModul用来限制连单位时间内连接数的模块, ...
- struts+service+action+数据库
用户登录流程 1.jsp根据form表单中的action的login <form action="/test02/login" method="post&quo ...
- Cornerstone详细操作
1.⾸首先打开Cornerstone 2.然后如下图所⽰示: 3.选择对应的仓库,如下图所⽰示 4.然后Import完成之后,就把本地的⽂文件提交到SVN服务器上了,如下图所⽰示,另外如果你想要使 ...
- google-breakpad
BUG收集系统: 国内可以使用友盟,国外可以使用Crashlytics SDK,或者自己实现使用 google-breakpad,参见下列文章: Crashlytics SDK 部分: http:// ...
- PlayMaker 学习笔记
1.v1.7.8.3版本无法使用全局变量,原因是Assets\Plugins\PlayMaker下的Resources文件夹变成中文了,无法创建全局变量文件,手动创建一个Resources文件夹即可
- 【Auto Layout】Xcode6及以上版本,创建Auto Layout 约束时产生的一些变化【iOS开发教程】
[#Auto Layout#]Xcode6创建Auto Layout 约束时产生的一些变化 通过两个小Demo来展示下变化: Demo1需求: 为控制器的根视图(图中的“控制器View”)的子 ...
- iOS 8 牛刀小试
iOS 8 牛刀小试 1.UIWindow的bounds发生变化(Window本身发生了旋转) iOS 7之前Window的bounds不会随着方向而变化,但是到了iOS 8以后,随着设备方向的旋转, ...
- 机器码call和jmp地址的计算
call和jmp都是跳转指令,但是call的同时会把pc地址压入堆栈,并且这两种方式都有远和近跳转.下面的分析不全,因为没有在网上找到足够的资料,个人创造这个情景还是有些困难. 1.例子中的call的 ...
- window8.1使用之快捷键
WIN键+? Win键——打开“开始”屏幕 Win+D——显示桌面 Win+E——打开计算机 Win+R——打开“运行”对话框 Win+L——锁定计算机 Win+M——最小化窗口 Win+方向键——窗 ...
- static 的使用
static用法小结 转自 http://blog.csdn.net/Kendiv/article/details/675941 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有 ...