问题描述:

Description

在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。

Input

输入含有多组测试数据。 
每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n 
当为-1 -1时表示输入结束。 
随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。 

Output

对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证C<2^31)。

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)的更多相关文章

  1. virtual judge(专题一 简单搜索 E)

    Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose ...

  2. virtual judge(专题一 简单搜索 C)

    Description Farmer John has been informed of the location of a fugitive cow and wants to catch her i ...

  3. virtual judge(专题一 简单搜索 B)

    Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...

  4. [kuangbin带你飞]专题一 简单搜索 题解报告

    又重头开始刷kuangbin,有些题用了和以前不一样的思路解决.全部题解如下 点击每道题的标题即可跳转至VJ题目页面. A-棋盘问题 棋子不能摆在相同行和相同列,所以我们可以依此枚举每一行,然后标记每 ...

  5. [kuangbin带你飞]专题一 简单搜索(回顾)

    A - 棋盘问题 POJ - 1321 注意条件:不能每放一个棋子,就标记一行和一列,我们直接枚举每一行就可以了. AC代码: #include<iostream> #include< ...

  6. kuangbin专题 专题一 简单搜索 Oil Deposits HDU - 1241

    题目链接:https://vjudge.net/problem/HDU-1241 题意:问有几个油田,一个油田由相邻的‘@’,组成. 思路:bfs,dfs都可以,只需要遍历地图,遇到‘@’,跑一遍搜索 ...

  7. kuangbin专题 专题一 简单搜索 迷宫问题 POJ - 3984

    题目链接:https://vjudge.net/problem/POJ-3984 这个题目,emm,上代码,看的估计应该是刚开始接触搜索的,我带点注释,你能慢慢理解. #include <ios ...

  8. kuangbin专题 专题一 简单搜索 Fire! UVA - 11624

    题目链接:https://vjudge.net/problem/UVA-11624 题意:一个迷宫,可能有一个或者多个地方着火了,每过1个时间消耗,火会向四周蔓延,问Joe能不能逃出迷宫,只要走出迷宫 ...

  9. kuangbin专题 专题一 简单搜索 Fliptile POJ - 3279

    题目链接:https://vjudge.net/problem/POJ-3279 题意:格子有两面,1表示黑色格子,0表示白色格子,奶牛每次可以踩一个格子,踩到的格子和它周围的上下左右格子都会翻面,也 ...

随机推荐

  1. 京东android面试题(2018 顶级互联网公司面试题系列)

    以下来自于北京的一个兄弟的面试题 1.静态内部类和非静态内部类有什么区别  2.谈谈你对java多态的理解  3.如何开启线程,run和runnable有什么区别  4.线程池的好处  5.说一下你知 ...

  2. 淘宝开放平台php-sdk测试 获取淘宝商品信息(转)

    今天想使用淘宝开放平台的API获取商品详情,可是以前一直没使用过,看起来有点高深莫测,后然看开发入门,一步一步,还真有点感觉了,然后看示例,还真行了,记下来以后参考.其中遇到问题,后然解决了.因为我已 ...

  3. ubunbu退出nano

    无意中进入ubuntu GNU nano ctrl+x即可退出

  4. 小程序 requestAnimationFrame 死循环

    小程序没有requestAnimationFrame  这个方法,小游戏有,使用这个方法会造成死循环

  5. 基于CocoaPods的iOS项目模块化实践

    什么是CocoaPods? CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has ove ...

  6. Android系统Recovery工作原理之使用update.zip升级过程分析(三)【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7464699 以下的篇幅开始分析我们在上两个篇幅中生成的update.zip包在具体更新中所经 ...

  7. redis配置参数的热修改

    Redis使用config命令,可以对配置项参数热修改,不必重启. Redis最好不要重启,重启一次会引发如下问题: 如果数据很多(例如几个G),读起来很慢: 重启风险很大,Redis有内存陷阱 重启 ...

  8. php之打印

    echo 比较适合用来打印字符串,数字 print_r 一般打印数组 var_dump 可以打印所有类型,打印变量的类型及其值

  9. linux raid技术

    一.概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意.是为了提高文件在磁盘上的读写速度而研究出来的. ...

  10. 分享知识-快乐自己:快速理解(Java内部类)

    1):成员内部类 什么是内部类?: 内部类就是在一个类中定义另一个类. 定义语法: 使用命令行查看编译 产生的文件: 如何生成内部类对象? 创建规则:内部类对象 需要先声明外部类对象. 内部类以及外部 ...