virtual judge(专题一 简单搜索 A)
问题描述:
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"cstdio"
#include"queue"
using namespace std;
const int MAXN=;
typedef pair<int,int> P;
P vec[MAXN];
int cnt;
char map[MAXN][MAXN];
int n,k;
int visr[MAXN];
int visc[MAXN];
int ans;
void dfs(int i,int j)
{
if(j==k)
{
ans++;
return ;
}
if(i==cnt) return ; P no=vec[i];
if(!visr[no.first]&&!visc[no.second])
{
visr[no.first]=;
visc[no.second]=;
dfs(i+,j+);
visr[no.first]=;
visc[no.second]=;
dfs(i+,j);
}
else dfs(i+,j);
}
int main()
{
while(scanf("%d%d",&n,&k)!=EOF&&n!=-&k!=-)
{
cnt=;
scanf("%*c");
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]=='#')
{
vec[cnt++]=P(i,j);
}
}
scanf("%*c");
}
ans=;
dfs(,);
printf("%d\n",ans);
} return ;
}
清晰思路2:
#include"cstdio"
using namespace std;
char map[][];
int n,k;
int ans;
int vis[];
void dfs(int i,int j)
{
if(j==k)
{
ans++;
return;
}
if(i==n) return ;
dfs(i+,j);
for(int x=;x<n;x++)
{
if(map[i][x]=='#'&&!vis[x])
{
vis[x]=;
dfs(i+,j+);
vis[x]=;
}
}
}
int main()
{
while(scanf("%d%d",&n,&k)!=EOF&&n!=-)
{
ans=;
for(int i=;i<n;i++)
scanf("%s",map[i]); //新地图输入方式
dfs(,);
printf("%d\n",ans);
}
return ;
}
virtual judge(专题一 简单搜索 A)的更多相关文章
- virtual judge(专题一 简单搜索 E)
Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose ...
- virtual judge(专题一 简单搜索 C)
Description Farmer John has been informed of the location of a fugitive cow and wants to catch her i ...
- virtual judge(专题一 简单搜索 B)
Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...
- [kuangbin带你飞]专题一 简单搜索 题解报告
又重头开始刷kuangbin,有些题用了和以前不一样的思路解决.全部题解如下 点击每道题的标题即可跳转至VJ题目页面. A-棋盘问题 棋子不能摆在相同行和相同列,所以我们可以依此枚举每一行,然后标记每 ...
- [kuangbin带你飞]专题一 简单搜索(回顾)
A - 棋盘问题 POJ - 1321 注意条件:不能每放一个棋子,就标记一行和一列,我们直接枚举每一行就可以了. AC代码: #include<iostream> #include< ...
- kuangbin专题 专题一 简单搜索 Oil Deposits HDU - 1241
题目链接:https://vjudge.net/problem/HDU-1241 题意:问有几个油田,一个油田由相邻的‘@’,组成. 思路:bfs,dfs都可以,只需要遍历地图,遇到‘@’,跑一遍搜索 ...
- kuangbin专题 专题一 简单搜索 迷宫问题 POJ - 3984
题目链接:https://vjudge.net/problem/POJ-3984 这个题目,emm,上代码,看的估计应该是刚开始接触搜索的,我带点注释,你能慢慢理解. #include <ios ...
- kuangbin专题 专题一 简单搜索 Fire! UVA - 11624
题目链接:https://vjudge.net/problem/UVA-11624 题意:一个迷宫,可能有一个或者多个地方着火了,每过1个时间消耗,火会向四周蔓延,问Joe能不能逃出迷宫,只要走出迷宫 ...
- kuangbin专题 专题一 简单搜索 Fliptile POJ - 3279
题目链接:https://vjudge.net/problem/POJ-3279 题意:格子有两面,1表示黑色格子,0表示白色格子,奶牛每次可以踩一个格子,踩到的格子和它周围的上下左右格子都会翻面,也 ...
随机推荐
- office2013安装/激活
ed2k://|file|cn_office_professional_plus_2013_x64_dvd_1134006.iso|914106368|E5FBAE9EE9CB35D5E777EA78 ...
- jQuery-Ajax-Timeout属性不生效的问题
async必须设置为async:ture,timeout才生效: 如果设置为async:false,则锁住浏览器,禁止一切操作,直到请求有返回结果.
- maven编译问题-maven项目运行时找不到文件,解决方案之一
问题描述:以上信息是tomcat在启动项目的时候报的错误信息,发现没有找到配置文件,实际上配置文件在项目中是存在的,但是,在编译过程中,配置文件没有能加载到编译后的项目中.就造成了,找不到这些怕配置文 ...
- VOFM 例程
SAP ERP 实施中,经常会用到例程开发(TCODE:VOFM).这个开发目前我用到的是影响SD和MM的定价过程.创建例程需要ACCESS KEY,这个可以通过申请得到,创建后例程会被包含在一个RE ...
- python基础18 ---多态与绑定方法
一.抽象类 1.抽象类的定义:从一堆类中抽象出相同的内容,重新组成一个新的类,这样的类属于抽象类. 2.香蕉类是一类水果,苹果类是一类水果,葡萄类是一类水果,但是他们都属于水果,从他们这些类中可以抽象 ...
- iOS swift 语句只能写在函数体内
1. 语句只能在函数体内: eg 因为我写在playground里面没报错 我直接放在这个位置就报错了 在这个.swift 文件里面 print 应该写在func 等方法(函数)里面 其他语句 ...
- Android系统定制之SystemUI修改:下拉通知栏尺寸【转】
本文转载自:https://blog.csdn.net/huil0925/article/details/67632358 最近项目需要修改下拉通知栏面板的宽度,完成后,写个Blog做个总结,也提供给 ...
- c#学习内容
学习winform+DevExpress 界面制作 wpf UIAutomation 控制别的程序 ok c#通过句柄控制别的程序 ok c# 截图 ok c# 多线程 ok c# 数据库myq ...
- mysql自定义函数语法
创建函数 DELIMITER $$DROP FUNCTION IF EXISTS `test` $$CREATE FUNCTION `test`(a int ,b int)RETURNS int BE ...
- QT 按键处理 快捷键处理 shift + ctrl
原味地址:http://www.cnblogs.com/codingmylife/archive/2010/08/30/1812739.html CTRL+Enter发送信息的实现 在现在的即时聊天程 ...