首页 > 其他分享 >棋盘问题

棋盘问题

时间:2023-02-17 15:34:52浏览次数:31  
标签:Map int 摆放 问题 vis 棋子 棋盘


 

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

Input

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

Output

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

Sample Input


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


Sample Output


2 1


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std ;
const int MAX = 20 ;
char Map[MAX][MAX] ;
int vis[MAX ] ;
int n , k ;
int ans = 0 ;
void dfs(int step , int num )
{
if(num == 0 )
{
//棋子用完
ans++ ;
return ;
}
if(step >=n )
{
//所有的子图都遍历完了
return ;
}
for(int j = step ; j<n ; j++)
{

for(int i = 0 ; i<n ; i++)
{
if(Map[j][i] =='#' &&!vis[i])
{
vis[i] = 1 ;
dfs(j+1,num-1) ;
vis[i] = 0 ;
}
}
}

}
int main()
{


while(cin >> n >> k )
{
memset(Map,0,sizeof(Map)) ;
memset(vis,0,sizeof(vis)) ;
if (n== -1 && k==-1)
break ;
ans = 0 ;
for(int i = 0 ; i<n ;i++)
{
cin >>Map[i] ;
}


dfs(0,k) ;
cout<<ans<<endl ;

}


return 0 ;
}

 

 

 

 

标签:Map,int,摆放,问题,vis,棋子,棋盘
From: https://blog.51cto.com/u_15970235/6064286

相关文章

  • Oracle 19c 安装包卡在安装向导,连安装向导第一页都进不去的问题
    标题:Oracle19c安装包卡在安装向导,连安装向导第一页都进不去的问题!问题:Oracle19C在安装包的时候,点了Setup.exe后出现命令行,然后过了一会出现安装向导的界面,但是一直无......
  • 记录uniapp-小程序文件上传问题
    1.支付宝文件上传问题 uni.uploadFile如果缺少fileType运行到微信没有问题,但是运行到支付宝会报错,需要补齐fileType2.接口返回需要注意,res.data为字符串,需要转换JSON......
  • 跳马问题
    题目:洛谷P1644跳马问题题目背景在爱与愁的故事第一弹第三章出来前先练练四道基本的回溯/搜索题吧……题目描述中国象棋半张棋盘如图1所示。马自左下角(0,0)向右上角(m,n)跳。......
  • odoo手动提交事务问题探索
    背景:在做项目时,发现数据库中几百条数据的修改时间都是相同的。寻找其中原因,在代码层面为了避免大数据量放在一次修改数据,特意做了分页查询,每一页执行一次更新方法,所有数据......
  • 解决Qt运行程序后,可用串口变化问题
    1.Qt解决运行程序后,可用串口变化问题2.设置定时器,定时刷新可用串口//定义全局变量QSerialPort*serialPort;QTimer*timer;QStringListportStringList;QStringcurrentCOM......
  • 打开微信公众号H5页面显示“无法打开页面”问题(微信浏览器打开H5页面)
    公司最近遇到一个离谱问题在湖北的使用安卓手机的用户访问公众号会显示“无法打开页面”,不论是流量还是WiFi都是一样的问题,但是在苹果手机上是可以正常访问的,最骚的是其......
  • JavaScript常见问题梳理
    1、this指向1、全局函数this指向全局对象window,注意严格模式下,this为undefined//[objectWindow]alert(this);functionf(){alert(this)}f()//undefinedfu......
  • 拜占庭将军问题和 Raft 共识算法讲解
    作者:京东物流郭益如导读在分布式系统中,什么是拜占庭将军问题?产生的场景和解决方案是什么?什么是Raft共识算法?Raft算法是如何解决拜占庭将军问题的?其核心原理和算法......
  • VMware Workstation 与 Hyper-V 不兼容问题
       新建文本文档,复制下面这段代码,重命名为Hyper-V.cmd,管理员运行,最后输入Y重启电脑即可。pushd"%~dp0"dir/b%SystemRoot%\servicing\Packages\*Hyper-V*.mum>......
  • CAD坐标显示不全怎么办?CAD坐标常见问题解答!
    今天小编来和大家聊一下浩辰CAD看图王中关于CAD坐标的那些事,比如:CAD坐标为何显示不全?CAD坐标显示结果和之前不一样?以及不能精准捕捉CAD坐标等情况,应该如何轻松解决?今天就和......