【题目描述】

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

【输入】

输入含有多组测试数据。

每组数据的第一行是两个正整数n,k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 (n≤8,k≤n)

当为−1 −1时表示输入结束。

随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域,. 表示空白区域(数据保证不出现多余的空白行或者空白列)。

【输出】

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

【输入样例】

2 1
#.
.#
4 4
...#
..#.
.#..
#...
-1 -1

【输出样例】

2
1

【源程序】

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define N 10
using namespace std;
int n,k;
char maps[N][N];
int vis[N];
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int cnt;
void dfs(int x,int y)
{if(y==k){cnt++;return;}for(int i=x;i<=n;i++)for(int j=1;j<=n;j++)if(maps[i][j]=='#'&&vis[j]){vis[j]=0;dfs(i+1,y+1);vis[j]=1;}return;
}
int main()
{while(scanf("%d%d",&n,&k)!=EOF){if(n==-1&&k==-1)break;memset(vis,1,sizeof(vis));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>maps[i][j];cnt=0;dfs(1,0);cout<<cnt<<endl;}return 0;
}

棋盘问题(信息学奥赛一本通-T1217)相关推荐

  1. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  2. Knight Moves(信息学奥赛一本通-T1450)

    [题目描述] 编写一个程序,计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数.骑士一步可以移动到的位置由下图给出. [输入] 第一行给出骑士的数量 n. 在接下来的 3n 行中,每 3 行描述 ...

  3. 信息学奥赛一本通C++语言-----1120:同行列对角线的格

    [题目描述] 输入三个自然数nn,ii,j(1≤i≤n,1≤j≤n)j(1≤i≤n,1≤j≤n),输出在一个n×nn×n格的棋盘中(行列均从11开始编号),与格子(ii,jj)同行.同列.同一对角线的 ...

  4. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  5. 信息学奥赛一本通T1451:棋盘游戏

    信息学奥赛一本通T1451:棋盘游戏 [题目描述] 在一个 4×4 的棋盘上有 8 个黑棋和 8 个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的.移动棋子的规则是交换相邻两个棋子. 给出一 ...

  6. 信息学奥赛一本通:1219.马走日

    信息学奥赛一本通:1219.马走日 1219:马走日 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 7406 通过数: 3863 [题目描述] 马在中国象棋以日字形规则移动. 请 ...

  7. 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”

    董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...

  8. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

  9. 《信息学奥赛一本通提高篇》第6章 组合数学

    例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...

最新文章

  1. git进入项目目录 windows_Windows下搭建Git服务器
  2. VS 远程调试 Azure Web App
  3. teginx编译安装FAQ
  4. python在当前目录创建txt文件-python-在目录中创建多个文本文件的字数字...
  5. python 计算 IOU
  6. explicit_defaults_for_timestamp参数的专题报告
  7. MCU中printf重定向实现
  8. hadoop(4)——用python代码结合hadoop完成一个小项目
  9. 如何提高JVM的性能?
  10. 网吧游戏更新对比软件技术报告
  11. Apache Doris 在京东广告报表查询场景下的应用
  12. FinalReport连接MYSQL数据库失败经验分享
  13. 妙!云服务器远程登录,本地听声音
  14. a到z的ascii码值是多少_c语言 ASCLL码中 A~Z和a~z是多少
  15. Google Chrome插件开发-Context Menus
  16. 微软输入法设置小鹤双拼
  17. kindlenbsp;3nbsp;开箱、注册、装多…
  18. ubuntu 20.04搭建ESP-ADF开发环境
  19. 4年小Java的心路历程,工作感悟
  20. 4094. Spiral matrix

热门文章

  1. 深入线程池的问题连环炮
  2. 猪八戒玉华王:老码农的7项灵魂思考
  3. 我要带徒弟学写JAVA架构,引路架构师之路
  4. JEECG 3.6.5版本发布,企业级JAVA快速开发平台
  5. Android -- 自定义ScrollView实现放大回弹效果
  6. 2016年12月20日感想
  7. HDU1248 寒冰王座 【数学题】or【全然背包】
  8. Flex DataGrid 筛选实现
  9. 解决RabbitMQ service is already present - only up...
  10. Azure Services Platform