棋盘问题(信息学奥赛一本通-T1217)
【题目描述】
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放 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)相关推荐
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- Knight Moves(信息学奥赛一本通-T1450)
[题目描述] 编写一个程序,计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数.骑士一步可以移动到的位置由下图给出. [输入] 第一行给出骑士的数量 n. 在接下来的 3n 行中,每 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)同行.同列.同一对角线的 ...
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- 信息学奥赛一本通T1451:棋盘游戏
信息学奥赛一本通T1451:棋盘游戏 [题目描述] 在一个 4×4 的棋盘上有 8 个黑棋和 8 个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的.移动棋子的规则是交换相邻两个棋子. 给出一 ...
- 信息学奥赛一本通:1219.马走日
信息学奥赛一本通:1219.马走日 1219:马走日 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 7406 通过数: 3863 [题目描述] 马在中国象棋以日字形规则移动. 请 ...
- 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”
董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
- 《信息学奥赛一本通提高篇》第6章 组合数学
例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...
最新文章
- git进入项目目录 windows_Windows下搭建Git服务器
- VS 远程调试 Azure Web App
- teginx编译安装FAQ
- python在当前目录创建txt文件-python-在目录中创建多个文本文件的字数字...
- python 计算 IOU
- explicit_defaults_for_timestamp参数的专题报告
- MCU中printf重定向实现
- hadoop(4)——用python代码结合hadoop完成一个小项目
- 如何提高JVM的性能?
- 网吧游戏更新对比软件技术报告
- Apache Doris 在京东广告报表查询场景下的应用
- FinalReport连接MYSQL数据库失败经验分享
- 妙!云服务器远程登录,本地听声音
- a到z的ascii码值是多少_c语言 ASCLL码中 A~Z和a~z是多少
- Google Chrome插件开发-Context Menus
- 微软输入法设置小鹤双拼
- kindlenbsp;3nbsp;开箱、注册、装多…
- ubuntu 20.04搭建ESP-ADF开发环境
- 4年小Java的心路历程,工作感悟
- 4094. Spiral matrix