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

棋盘问题

时间:2024-11-27 16:22:27浏览次数:8  
标签:cnt include int 摆放 问题 棋子 棋盘

棋盘问题(带条件的DFS)
题目
   在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放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<cstring>
#include<algorithm>
using namespace std;
const int N=10;
char g[N][N];
int n,k;
bool st[N];//基类放没放棋子
int res=0;//记录方案数

//x表示当前枚举到哪一行,cnt记录放了几枚棋子
void dfs(int x,int cnt)
{
        if(cnt==k)
        {
        res++;
        return;
        }
        if(x>n) return;//剪枝
        for(int i=0;i<n;i++)//i考虑列
        {
            if(!st[i]&&g[x][i]=='#')//第i列没放过棋子且这个位置为#
            {
                st[i]=true;
                dfs(x+1,cnt+1);
                 st[i]=false;//回溯
            }
        }

        dfs(x+1,cnt);//为了考虑当前行不放置棋子而直接跳到下一行的情况。
}


int main()
{
        while(cin>>n>>k,n>0&&K>0)
        {
            for(int i=0;i<n;i++)  scanf("%s",g[i]);
            res=0;
           dfs(0,0);//从0行,0棋子开始
          printf("%d",res);
        }
    return 0;
}

标签:cnt,include,int,摆放,问题,棋子,棋盘
From: https://www.cnblogs.com/xuzhenxuexi/p/18572535

相关文章

  • 信息资源管理文字题之“分析信息化发展过程中面临的实际问题和应对之策”
    一、材料:广州石化公司是中国石油化工股份有限公司在华南地区最大的现代化石油工企业之一。经过近几年的信息化发展,广州石化公司的内部动态信息资源建设已初具模型,建成了生产管理、质量管理、财务管理、销售、采购等应用系统,其数据类型包括TXT、DOC、XLS、WPS、PDF、PPT等。同时,广......
  • Docker 代理和权限问题
    Docker代理设置/etc/docker/daemon.jsonsudotee/etc/docker/daemon.json<<EOF{"proxies":{"http-proxy":"http://10.0.114.195:7890","https-proxy":"http://10.0.114.195:7890","no-pr......
  • 新能源汽车充电基础设施短板问题多,如何实现高效、综合、智能化管理?
    随着城市经济的发展,人民生活水平的提升,新能源汽车保有量快速增长,而日益增长的新能源汽车需求与充电基础设施建设不平衡的矛盾日益突出。由于停车泊位充电基础设施总量不足、布局待优化、利用效率低、建设运营存在短板问题等原因,充电找桩难、管理不规范、综合成本高等问题十分突出,......
  • # 鸿蒙Flutter 常见问题总结
    鸿蒙Flutter常见问题总结dart代码中判断当前平台是否是ohosimport'package:flutter/foundation.dart';boolisOhos(){returndefaultTargetPlatform==TargetPlatform.ohos;}代码中存在Platform.isOhos会导致fluttnrun、flutterbuildhar、flutterattach失败问......
  • 测试经理面试常见的20个问题
    以下是测试主管/测试经理/质量保证经理的面试问题和答案,供新人和有经验的求职者获得他们梦想的工作。 1)测试经理的职责是什么? QA经理的角色包括: 从启动到结束管理项目测试计划获得客户对交付成果的认可向客户端批准中间交付物和补丁发布提交工作输入问题管理团队......
  • 安装调试leggedrobotics/legged_gym并运行出现的问题
    问题1AttributeError:module'distutils'hasnoattribute'version'解决方法一:如果不想更新torch的话,可以更改setuptools版本成功!#Ifyouusepip:pipinstallsetuptools==59.5.0#Forpip3:pip3installsetuptools==59.5.0#Ifyouuseconda:condainstall......
  • gym运行rl-mpc出现的问题
    问题一:Importingmodule'gym_38'(/home/dhu/legged_robot_competition/isaacgym/python/isaacgym/_bindings/linux-x86_64/gym_38.so)SettingGYM_USD_PLUG_INFO_PATHto/home/dhu/legged_robot_competition/isaacgym/python/isaacgym/_bindings/linux-x86_64/us......
  • Linux ARM GIC仅中断CPU 0问题分析
    1.前言限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。2.分析背景本文分析基于linux-4.19.157内核代码分析3.问题在使用全志H3机器时,观察到一个现象,外设中断总是集中在CPU0处理:#cat/proc/interruptsCPU0CPU1......
  • 龙芯3A4000的linux系统下node14.17.5运行出现Floating point exception(浮点数异常)问
    因项目需要在龙芯下使用node14.17.5执行构建任务,在使用源码编译安装后,执行时出现Floatingpointexception(浮点数异常)问题。经调试发现,其是在使用openssl加载ECC相关证书时使用mips64汇编代码时导致的。在分析相关代码后,将deps下的openssl中的bn_div.c文件的16行进行修改,重新......
  • tree-picker和grid-picker使用问题总结
    tree-picker组件使用举例表格型:示例图点击查看代码<el-form-itemlabel="基础参数定义:":label-width="formLabelWidth"prop="fkCulateParamDef"><grid-picker:tableColumn="fkCulateParamDefColumn":modelValue="form&q......