[ACM_图论] 棋盘问题 (棋盘上放棋子的方案数)
Input
Output
Sample Input
2 1
#.
.#
4 4
...#
..#.
.#..
#...
-1 -1
Sample Output
2
1
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<string>
#include<string.h>
#include<fstream>
using namespace std;
//***********************************************************************
int n,uu,sum,ans;//n为nxn棋盘,uu为要放棋子数,sum为过程中当前棋子数
int G[][],visH[],visL[];//G[][]棋盘0-1描述矩阵,vis_[]标记当前行列是否可下棋
//***********************************************************************
void DFS(int i,int j){
if(sum==uu){ans++;return;}
for(int k=i+;k<n;k++)
for(int l=;l<n;l++){
if(G[k][l] && !visH[k] && !visL[l]){
visH[k]=visL[l]=;
sum++;
DFS(k,l);
sum--;
visH[k]=visL[l]=;
}
}
}
//***********************************************************************
int main(){
string s;
while(cin>>n>>uu){
if(n==- && uu==-)break; for(int i=;i<n;i++){ //输入数据并转换0-1可放表G[][]
cin>>s;
for(int j=;j<n;j++)
G[i][j]=(s[j]=='#');
} memset(visH,,sizeof(visH));//行、列标记数组清0,ans初始0
memset(visL,,sizeof(visL));
ans=;
DFS(-,); cout<<ans<<'\n';
}return ;
}
[ACM_图论] 棋盘问题 (棋盘上放棋子的方案数)的更多相关文章
- BZOJ3294 CQOI2011放棋子(动态规划)
可以看做棋子放在某个位置后该种颜色就占领了那一行一列.行列间彼此没有区别. 于是可以设f[i][j][k]表示前k种棋子占领了i行j列的方案数.转移时枚举第k种棋子占领几行几列.注意行列间是有序的,要 ...
- BZOJ 3294: [Cqoi2011]放棋子 计数 + 容斥 + 组合
比较头疼的计数题. 我们发现,放置一个棋子会使得该棋子所在的1个行和1个列都只能放同种棋子. 定义状态 $f_{i,j,k}$ 表示目前已使用了 $i$ 个行,$j$ 个列,并放置了前 $k$ 种棋子 ...
- 2021.5.23 noip模拟2(排序|划艇|放棋子)
今天比昨天更惨,惨炸了 看到T1不会,跳!!! T2不会,再跳!!!! T3不会,后面没题了:::: 无奈无奈,重新看T1,然鹅时间已经过去了一个小时 然而我一想不出题来就抱着水瓶子喝水,然后跑厕所, ...
- UVA11134传说中的车(放棋子)
题意: 给你一个n*n的棋盘,让你在棋盘上放n个棋子,要求是所有棋子不能相互攻击(同行或者同列就会攻击),并且每个棋子都有一个限制,那就是必须在给定的矩形r[i]里,输出每个棋子的位置,s ...
- BZOJ3294: [Cqoi2011]放棋子
Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数.第二行包含c个正整数,即每个颜色的棋子数.所有颜色的棋子总数保证不超过nm. Output 输出 ...
- Android实训案例(八)——单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局
Android实训案例(八)--单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局 阿法狗让围棋突然就被热议了,鸿洋大神也顺势出了篇五子棋单机游戏的视频,我看到了就像膜拜膜拜,就 ...
- 【CQOI2011】放棋子
[CQOI2011]放棋子 在一个n行m列的棋盘里放一些彩色的棋子,使得每个格子最多放一个棋子,且不同颜色的棋子不能在同一行或者同一列.有多少种方法? 例如\(,n=m=3\),有两个白棋子和一个灰棋 ...
- 放棋子|2012年蓝桥杯B组题解析第七题-fishers
(13')放棋子 今有 6 x 6 的棋盘格.其中某些格子已经预先放好了棋子.现在要再放上去一些,使得:每行每列都正好有3颗棋子.我们希望推算出所有可能的放法.下面的代码就实现了这个功能. 初始数组中 ...
- [洛谷P3158] [CQOI2011]放棋子
洛谷题目链接:[CQOI2011]放棋子 题目描述 在一个m行n列的棋盘里放一些彩色的棋子,使得每个格子最多放一个棋子,且不同 颜色的棋子不能在同一行或者同一列.有多少祌方法?例如,n=m=3,有两个 ...
随机推荐
- js常用正则表达式2
字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对 ...
- Python 包的相对导入讲解
[Python 包的相对导入讲解] 参考:http://www.dai3.com/python-import.html
- 搭建本地MAVEN NEXUS 服务
下载 http://120.192.76.70/cache/www.sonatype.org/downloads/nexus-latest-bundle.zip?ich_args=232fba36ed ...
- 用window.showModelDialog() 打开的页面的返回值
有两个页面也个 Default1.aspx 另外一个是 Default2.aspx Default1.aspx 有个按钮是用来打开Default2.aspx页面的 按钮的js代码是 var win ...
- Java NIO教程 MappedByteBuffer
之前跟大家说过,要讲MappedByteBuffer,现在我来履行承诺了. 首先从大体上讲一下MappedByteBuffer究竟是什么.从继承结构上来讲,MappedByteBuffer继承自Byt ...
- 第2章 C#中的泛型
2.1 理解泛型2.1.1 为什么要有泛型 并不一定要使用字符T作为类型参数的名称,也可以使用其他的字符,但习惯上使用T. 2.1.2 类型参数约束什么是“向下的强制转换(downcast)”?因为O ...
- centos 下添加epel源
来源于http://www.centoscn.com/CentOS/config/2014/0920/3793.html,收录备用 0.安装yum优先级插件 yum install yum-prior ...
- ubuntu 环境变量修改和恢复总结[收藏]
在Ubuntu中有如下几个文件可以设置环境变量/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行./etc ...
- Confluence部署攻略 [转]
一.软件介绍 AtlassianConfluence(简称Confluence)是一个专业的wiki程序.它是一个知识管理的工具,通过它可以实现团队成员之间的协作和知识共享.Confluence不是一 ...
- asp.net MVC 源码分析
先上一张图吧 asp.net请求机制的图 by传智播客邹华栋老师 然后是 邹老师添加MVC请求过程的图 其实MVC 是在.netframework上加了一个过滤器 HttpModule 在C:\W ...