poj1321 DFS
棋盘问题
Time Limit: 1000 MS Memory Limit: 10000 KB
64-bit integer IO format: %I64d , %I64u Java class name: Main
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 <string.h>
using namespace std; bool chess[][];
bool vist_col[]; //列标记
int status; //状态计数器
int n,k; void DFS(int row,int num) //逐行搜索,row为当前搜索行,num为已填充的棋子数
{
if(num==k)
{
status++;
return;
}
if(row>n) //配合下面DFS(row+1,num); 语句使用,避免搜索越界
return; for(int j=; j<=n; j++)
{
if(chess[row][j] && !vist_col[j])
{
vist_col[j]=true; //放置棋子的列标记
DFS(row+,num+);
vist_col[j]=false; //回溯后,说明摆好棋子的状态已记录,当前的列标记还原
}
} DFS(row+,num); //这里是难点,当k<n时,row在等于n之前就可能已经把全部棋子放好
//又由于当全部棋子都放好后的某个棋盘状态已经在前面循环时记录了
//因此为了处理多余行,令当前位置先不放棋子,搜索在下一行放棋子的情况
return;
} int main(int i,int j)
{
while(cin>>n>>k)
{
if(n==- && k==-)
break; /*Initial*/ memset(chess,false,sizeof(chess));
memset(vist_col,false,sizeof(vist_col));
status=; for(i=; i<=n; i++)
for(j=; j<=n; j++)
{
char temp;
cin>>temp;
if(temp=='#')
chess[i][j]=true;
} DFS(,); //注意初始化的值别弄错了
cout<<status<<endl;
}
return ;
}
题意: 难得的汉字题面
这个错在哪里了呢
#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std;
bool map[9][9];
bool vis[9];
int n,k;
int sum; void dfs(int row,int num)
{
if(num==k)
{
sum++;
return;
}
if(row>n)
return;
for(int i=1;i<=n;i++)
{
if(map[row][i]==true&&vis[i]==false)
{
vis[i]=true;
dfs(row+1,num+1);
vis[i]==false;
}
}
dfs(row+1,num);
return;
} int main()
{
while(cin>>n>>k)
{
if(n==-1&&k==-1)
break;
memset(vis,false,sizeof(vis));
sum=0;
memset(map,false,sizeof(map)); for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
char str;
cin>>str;
if(str=='#')
map[i][j]=true;
}
}
dfs(1,0);
cout<<sum<<endl;
}
return 0;
}
poj1321 DFS的更多相关文章
- poj1321 棋盘问题(DFS)
题目链接 http://poj.org/problem?id=1321 题意 给定一块棋盘(棋盘可能是不规则的),有k个相同棋子,将k个棋子摆放在棋盘上,使得任意两个棋子不同行,不同列,求有多少种不同 ...
- POJ1321 棋盘问题(dfs)
题目链接. 分析: 用 dfs 一行一行的搜索,col记录当前列是否已经放置. AC代码如下: #include <iostream> #include <cstdio> #i ...
- poj1321 棋盘(dfs)
#include<iostream> #include<cstring> using namespace std; ]={},sum=; ][]; void dfs(int a ...
- 简单的dfs题 --- POJ1321 棋盘问题
题目链接: http://poj.org/problem?id=1321 题目大意: 你有k个棋子,若干个可以填的位置,要求填下一个棋子后其行和列不能填棋子. 思路: dfs策略 画图理解更好些: 填 ...
- poj1321 棋盘问题(深搜dfs)
转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接:id=1321">http://poj.org/prob ...
- 棋盘问题---poj1321(dfs)
http://poj.org/problem?id=1321 由于搜索是原来写的,而集训的时候没来所以只能现在补补咯-_- 简单的深搜 #include<stdio.h> #include ...
- DFS(3)——poj1321棋盘问题
一.题目回顾 题目链接:棋盘问题 Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于 ...
- POJ1321 棋盘问题 —— DFS回溯
题目链接:http://poj.org/problem?id=1321 棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions ...
- poj1321棋盘问题(dfs+摆放问题)
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. ...
随机推荐
- h5 微信分享朋友和朋友圈
生成JS-SDK权限验证签名 实现发送给朋友和分享到朋友圈时内容参数自定义 一.微信JS-SDK 1. 获得Access Token access token的获得方法在前面有介绍,详情见 微信公众平 ...
- Qt样式表的使用
Qt中可以灵活的使用层叠样式表(CSS),其语法和CSS很相似.因为HTML CSS的灵活性,所以可以很方便的为QT界面设计自己需要的外观.除了子类化Style类,使用QT样式表(QStyleShee ...
- Spring Environment(三)生命周期
Spring Environment(三)生命周期 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Envi ...
- EasyUI DataGrid 获得分页信息
var b = $('#SBDiv_1_DateGrid').datagrid('options'); console.info(b); 具体需要哪些字段,可以通过火狐debug,然后自己找需要的信息 ...
- java 中jar的使用
????????????这里不会 需要学习
- win8 本地化
先看个简单的案例:新时尚Windows8开发(6):资源 & 本地化 http://www.silverlightchina.net/html/windows8/study/2012/0902 ...
- centos下利用yum安装LAMP(Linux+Apache+MySQL+PHP)及配置
先说下我的实践配置,centos6.5(64位),联网 安装前准备:关闭防火墙 service iptables stop 安装MySQL 打开终端,root用户 1 yum install mysq ...
- CHAPITRE II
J'ai ainsi vécu seul, sans personne avec qui parler véritablement, jusqu'à une panne[pan][机]故障 dans ...
- boost-字符编码转换:使用conv
Windows下的字符集转换可以使用WideCharToMultiByte/ MultiByteToWideChar,Linux下字符集转换可以使用iconv()函数,下面为使用boost的conv来 ...
- Ubuntu 16.04 搭建LAMP服务器环境流程
http://www.linuxidc.com/Linux/2016-09/135629.htm [安装mysql时 只需安装 mysql-server无需安装mysql-client] mysql ...