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

Input

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

Output

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

#include <iostream>
#include <stdio.h>
using namespace std;

int n,k;
long long res = 0;
int vis[10];
char m[10][10];

void dfs(int d,int num){
if(num == k){
res++;
return;
}
for(int i = d ; i<n;i++){
for(int j = 0;j<n;j++){
if(!vis[j]&&m[i][j]=='#'){
vis[j] = 1;
dfs(i + 1,num + 1);
vis[j] = 0;
}
}
}

}
int main()
{
while(scanf("%d%d",&n,&k)){
if(n==-1&&k==-1) break;
res = 0;
for(int i = 0;i<n;i++){
scanf("%s",&m[i]);
}

dfs(0,0);
cout<<res<<endl;

}
return 0;

}

POJ_1321的更多相关文章

  1. POJ_1321——棋盘问题,回溯+剪枝

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

随机推荐

  1. spring定时器cron

    关于cron表达式(参考资料):Cron 表达式包括以下 7 个字段: 秒 分 小时 月内日期 月 周内日期 年(可选字段) 特殊字符Cron 触发器利用一系列特殊字符,如下所示: 反斜线(/)字符表 ...

  2. HttpClient设置连接超时时间

    https://www.cnblogs.com/winner-0715/p/7087591.html 使用HttpClient,一般都需要设置连接超时时间和获取数据超时时间.这两个参数很重要,目的是为 ...

  3. python bif

    filter(过滤器):   语法:         filter(function, iterable)         funciton 为判断函数         iterable 为可迭代对象 ...

  4. Go语言极速入门手册.go

    Github: https://github.com/coderzh/CodeTips /* gotips_test.go: Golang速学速查速用代码手册 Source: github.com/c ...

  5. gradle安装操作

    下载你所需要对应的版本,gradle-4.3.1-bin.zip 下载后解压到你想要的目录 设置环境变量 在cmd模式下查看,出现信息证明安装成功

  6. 服务程序在c#中的写法

    1.在VS.NET2003中新建一个WINDOWS服务程序的项目WinSrv_A. 2.更改SERVICE1.CS属性SERVICENAME为你所要建立的服务名称,在服务管理器->名称中你可以看 ...

  7. Android Studio学习NO.1 了解项目资源

    2018.3.1 12:40:51 阅读书籍:第一行代码 1. res目录 drawable 图片 mipmap 图标 values 字符串.样式.颜色 layout 布局 2. 引用(可在Andro ...

  8. EXCEL 批量添加单元格名称

    在EXCEL单元格的值填入想为其设置的名称之后,调整下述代码的begin_line,begin_column,end_line,end_column的值,执行此宏,可用于批量为单元格设置名称. (注: ...

  9. 使用VS2015编译xlslib库

    环境: win7_x64,VS2015 开始: 一.下载xlslib库 xlslib-package-2.5.0.zip 解压到一个指定目录,如E:\library\xlslib-package-2. ...

  10. 使用 logrotate 清理日志

    Linux 中配置 logrotate 程序,它可以自动执行日志文件的轮换.压缩.删除和用邮件发出. Linux账号密码过期会导致crontab作业不能执行 Authentication token ...