南沙C++信奥赛老师解一本通题1217:棋盘问题

news/2024/9/29 16:25:20

 【题目描述】

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

【输入】

输入含有多组测试数据。

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

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

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

【输出】

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

【输入样例】

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

【输出样例】

2
1

 

#include <bits/stdc++.h>
using namespace std;
char a[11][11];
int n,k,ans;
bool v[11]; //表示这列是否已放下 
void dfs(int row, int step)
{if(step==k)	//当放下棋子数等于k枚时 退出递归 {ans++;return;}for(int i=row;i<=n;i++){for(int j=1;j<=n;j++)if( a[i][j]=='#' && v[j ]==false ){v[j]=true;dfs(i+1,step+1);// 棋子加1,行号也要加1 v[j]=false;}}
}
int main()
{while(true){cin>>n>>k;if(n==-1&&k==-1)break;ans=0;memset(a,'.',sizeof(a));memset(v,false,sizeof(v));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>a[i][j];dfs(1,0);	//从0枚棋子开始 cout<<ans<<endl;}return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/66215.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

文件传输 --- 使用 FTP 在两个主机之前传输文件

FTP 客户端 服务端tcpsvd -vE 0.0.0.0 21 ftpd /app/updater/ -w &共享 /app/updater 的文件给客户端

高可用集群 KEEPALIVED ubuntu使用

1 Keepalived 架构和安装 2.1 Keepalived 架构 Keepalived进程树Keepalived <-- Parent process monitoring children \_ Keepalived <-- VRRP child \_ Keepalived <-- Healthchecking child2.2 Keepalived 环境准备 #环境准备 #两台keepalive机器分别配一个单独网卡…

PHP支付,TP5.0接入支付宝支付流程

一、支付宝沙箱 1.登录支付宝开放平台https://open.alipay.com/;点击右上角的“控制台”菜单 2.下拉到页末找到“沙盒” 配置一下基础信息:配置一下信息,特别注意,网关地址:沙箱环境是有dev的,正式上要去掉 dev; 二、DEMO 1.下载电脑网站支付Demo php版本 2.下载后把整…

无法访问你试图使用的功能所在的网络位置

无法访问你试图使用的功能所在的网络位置、无法删除 xxxx工具的旧版本问题如标题,被这个问题搞吐了。报错如下如:     起因是公司的产品有些周边工具,在分析和排查问题的过程中,遇到上图这个问题,因为要反复卸载和重装,还涉及到不同版本,最后玩坏了。卸载以后,Wind…

EKP qhky 附件A4纸张打印效果

一.需求背景 需求:EKP V16,对于附件打印 开发者一般情况下使用的是 请求直接预览打印 ,但是对于 需要自定义打印文件的大小 需要特别定制!方案:使用 PDF.js 在 JSP 页面中显示 PDF 文件(EKPV16 项目中已引入 PDF.js 库) 定制前效果:定制后效果: 二.Code 其中附件链接 …

Orange Pi + SPI点亮 ws2812

开发板型号:OrangePi One 系统版本:Ubuntu 20.04 focal Desktop 接口:SPI1. 连线 TB上买的ws2812大概长这样:细节标在图上了。 带插头的一端连上即可。其带针脚一端是多组灯带串联时候用。DI接SPI的MOSI。 参考博客[1] 2. 启用硬件SPI 在设置里有一个orangepi-config的执行…

时间格式化标签说明

时间格式化标签和PHP时间格式化语法一致,可以使用不同的字母代替,中间可以穿插任意字符。常见的格式包括:Y:四位数的年份 m:两位数的月份 d:两位数的日期 H:两位数的小时 i:两位数的分钟 s:两位数的秒示例格式 以下是一些示例格式:Y-m-d:2023-09-15 Y/m/d:2023/09/…

PbootCMS模板添加栏目提示:该内容栏目编号已经存在,不能再使用

当你在PbootCMS中添加栏目时,如果提示“该内容栏目编号已经存在,不能再使用”,这通常是因为数据库中的栏目编号(scode)已经存在重复。解决这个问题的方法是修改数据库中对应的栏目编号。 解决办法 1. 使用数据库管理工具 推荐使用数据库管理工具(如Navicat Premium)来管…