在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放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
乍一看和八皇后类似,但其实不太一样。和网上思路不太一样,这个题其实可以看成是:把相同的棋子以某种方式放进给定的格点里,求放入方式,可以转化成求全排列+判定,用DFS搞过。(全排列暴搜参考蓝书相关代码)。
跑了922ms,在T的边缘疯狂试探。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
int n,k;
char mmap[][];
struct node
{
int x;
int y;
}nod[];
bool vis[];
vector<node>v;
int ans=;
void dfs(int x,int cnt)//x表示选的序号 cnt表示已经用的棋子 //从vector里选出m个符合要求的位置
{
if(cnt>k||(cnt+v.size()-x)<k)
{
return;
}
if(x==v.size())
{
ans++;
return;
}
//不选x
dfs(x+,cnt);
//选x
int i;
bool flag=;
for(i=;i<x;i++)
{
if(vis[i]&&i!=x&&(v[i].x==v[x].x||v[i].y==v[x].y))//判断是否同行同列
{
flag=;
break;
}
}
if(flag)
{
vis[x]=;
dfs(x+,cnt+);
vis[x]=;
}
}
int main()
{
while(scanf("%d%d",&n,&k)!=EOF&&n!=-&&k!=-)
{
memset(mmap,,sizeof(mmap));
memset(vis,,sizeof(vis));
ans=;
int i,j;
for(i=;i<n;i++)
{
scanf("%s",mmap[i]);
}
v.clear();
node non;
non.x=;
non.y=;
v.push_back(non);//为了使vector下标从1开始,放一个空的占位
for(i=;i<n;i++)
{
for(j=;j<n;j++)
{
if(mmap[i][j]=='#')//满足条件的格点放入vector
{
node temp;
temp.x=i;
temp.y=j;
v.push_back(temp);
}
}
}
dfs(,);//暴搜
cout<<ans<<endl;
}
}
												

POJ1321棋盘问题(暴搜)的更多相关文章

  1. 模拟 + 暴搜 --- Help Me with the Game

    Help Me with the Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3175   Accepted: ...

  2. 【BZOJ-3033】太鼓达人 欧拉图 + 暴搜

    3033: 太鼓达人 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 204  Solved: 154[Submit][Status][Discuss] ...

  3. c++20701除法(刘汝佳1、2册第七章,暴搜解决)

    20701除法 难度级别: B: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述     输入正整数n,按从小到大的顺序输出所有 ...

  4. Codeforces Round #238 (Div. 2) D. Toy Sum 暴搜

    题目链接: 题目 D. Toy Sum time limit per test:1 second memory limit per test:256 megabytes 问题描述 Little Chr ...

  5. poj 3080 Blue Jeans(水题 暴搜)

    题目:http://poj.org/problem?id=3080 水题,暴搜 #include <iostream> #include<cstdio> #include< ...

  6. Sicily1317-Sudoku-位运算暴搜

    最终代码地址:https://github.com/laiy/Datastructure-Algorithm/blob/master/sicily/1317.c 这题博主刷了1天,不是为了做出来,AC ...

  7. codeforces 339C Xenia and Weights(dp或暴搜)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Xenia and Weights Xenia has a set of weig ...

  8. Usaco 2.3 Zero Sums(回溯DFS)--暴搜

    Zero SumConsider the sequence of digits from 1 through N (where N=9) in increasing order: 1 2 3 ... ...

  9. HDU4403(暴搜)

    A very hard Aoshu problem Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

随机推荐

  1. Atcoder Beginner Contest 155E(DP)

    #definde HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ]; int main(){ ios: ...

  2. 配置SSH使用密钥认证:实现免输入密码登陆

    一.实际工作生产场景分析 张三是某公司员工,由于业务上的需求,需要经常使用SSH工具登陆服务器A的root账户进行操作,为避免重复进行密码验证身份.现采用张山的公钥发送给服务器A,免输入密码登陆到服务 ...

  3. vue基础api

    vue比jq好处 1jq 频繁操作dom 增加了性能消耗 vue 模拟dom 从内存中拿 2jq 数据没有统一管理 vue 统一管理数据 3vue 组件开发可以提取出公共的html或js   mv*好 ...

  4. python 序列 倒着取元素

    当要倒着取元素时,用s[-2]只能取一个, 如果取多个时用s[-9:-1],注意,最后一个-1是不取出来的. 此时要用s[-9:] 最后一个空着就可以取出来了.

  5. 如何预测股票分析--先知(Prophet)

    在上一篇中,我们探讨了自动ARIMA,但是好像表现的还是不够完善,接下来看看先知的力量! 先知(Prophet) 有许多时间序列技术可以用在股票预测数据集上,但是大多数技术在拟合模型之前需要大量的数据 ...

  6. Scrapy爬虫基本使用

    一.Scrapy爬虫的第一个实例 演示HTML地址 演示HTML页面地址:http://python123.io/ws/demo.html 文件名称:demo.html 产生步骤 步骤1:建议一个Sc ...

  7. go语言 二叉树

    package main import ( "fmt" "reflect" ) type BinaryNode struct { Data interface{ ...

  8. AcWing 872. 最大公约数

    #include <iostream> #include <algorithm> using namespace std; //辗转相除法 //a和b的最大公约数 = b和(a ...

  9. Java进阶学习(5)之设计原则(下)

    框架加数据 把数据的硬编码尽可能解成框架加数据的结构 城堡游戏修改后的代码 Room类 package com.castle; import java.util.HashMap; public cla ...

  10. C/C++编程规范

    1.文件结构 C/C++程序通常分为两个文件,一个文件用于保存程序的声明,一个文件用于保存程序的实现. 1.1 版权和版本的声明 版权和版本的声明位于头文件和定义文件的开头,主要内容有:(1)版权信息 ...