题目
 
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放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. maya模板lock工具

    #lockTemple import  maya.cmds  as  mcimport stringif  mc.window('LockWin',ex=1)==1:    mc.deleteUI(' ...

  2. 学习笔记DL006:特征分解,奇异值分解

    特征分解. 整数分解质因素. 特征分解(eigendecomposition),使用最广,矩阵分解一组特征向量.特征值.方阵

  3. vue的渐进式理解

    链接:https://www.zhihu.com/question/51907207/answer/136559185 渐进式代表的含义是:主张最少. 每个框架都不可避免会有自己的一些特点,从而会对使 ...

  4. MongoDB关键指标意义&各数值区间意义&部署

    ## part 1 mms图 What's MMS MongoDB Management Service (MMS) is a suite of services for managing Mongo ...

  5. HTML中引入CSS的四种常用方法及各自的缺点

    在HTML中引入CSS的方法主要有四种,它们分别是行内式.内嵌式.链接式和导入式. 1.行内式 行内式是在标记的style属性中设定CSS样式.这种方式没有体现出CSS的优势,不推荐使用.格式如下: ...

  6. Vue01

    1.vue.js库的下载 vue.js是目前前端web开发最流行的工具库,由尤雨溪在2014年2月发布的. 另外几个常见的工具库:react.js /angular.js 官方网站: 中文:https ...

  7. Handlebars.js registerHelper

    Handlebars.registerHelper('link', function (text, url) { text = Handlebars.Utils.escapeExpression(te ...

  8. HashTable & HashMap & ConcurrentHashMap 原理与区别

    一.三者的区别     HashTable HashMap ConcurrentHashMap 底层数据结构 数组+链表 数组+链表 数组+链表 key可为空 否 是 否 value可为空 否 是 否 ...

  9. Ignite(二): 架构及工具

    1.集群和部署 Ignite集群基于无共享架构,所有的集群节点都是平等的,独立的,整个集群不存在单点故障. 通过灵活的Discovery SPI组件,Ignite节点可以自动地发现对方,因此只要需要, ...

  10. mat函数

    mat函数可以将目标数据的类型转换为矩阵(matrix) data=[[1,1,0,3,1],[1,0,1,4,3],[1,0,1,2,4],[0,1,1,1,2], [2,0,0,3,0],[1,0 ...