AYITACM2016省赛第一周(深搜) G - 棋盘问题
2016-04-20 09:20
218 查看
G - 棋盘问题
Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d
& %I64u
Submit Status
Description
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。
Input
输入含有多组测试数据。
每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n
当为-1 -1时表示输入结束。
随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。
Output
对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证C<2^31)。
Sample Input
Sample Output
分析:
从第一行开始放,放过的那一列标记为1,然后从第二行开始放,从第三行.......;
Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d
& %I64u
Submit Status
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
分析:
从第一行开始放,放过的那一列标记为1,然后从第二行开始放,从第三行.......;
#include<stdio.h> #include<string.h> char a[10][10]; int m,n,k,t,v[10]; void dfs(int x,int y) { if(x==m) { if(y==n) t++; return ; } for(int j=0; j<m; j++) if(a[x][j]=='#'&&!v[j]) { v[j]=1; dfs(x+1,y+1); v[j]=0; } dfs(x+1,y); } int main() { int i,j; while(scanf("%d %d",&m,&n)&&m!=-1&&n!=-1) { t=0; memset(v,0,sizeof(v)); for(i=0; i<m; i++) scanf("%s",a[i]); dfs(0,0); printf("%d\n",t); } return 0; }
相关文章推荐
- JVM调优总结-分代垃圾回收详述2
- Delphi 调用 C++ 回调函数
- 42数据库类
- Spring事务管理高级应用难点剖析
- Retrofit 上传图片(单张)
- 赛门铁克扩展验证EV SSL证书
- 使用 Java 配置进行 Spring bean 管理
- Qt事件传递机制(QApplication::installEventFilter的作用)
- 成员变量和局部变量同名 / 局部变量的作用域最小化
- 使用slidingmenu ,侧滑菜单
- Android四大控件之Activity:理论篇
- linux eclipse 下 Symbol 'std’could not be resolved 问题的解决
- ios常用三方资源
- YII 获取系统级请求参数的常用方法
- Android开发-API指南-<activity>
- (转)Javascript面向对象编程(三):非构造函数的继承(作者:阮一峰)
- WebAPI2使用Autofac实现IOC属性注入完美解决方案
- JAVA字符串操作
- 超声波测距实验
- [opencv] 伪彩色和彩虹图