当前位置: 首页 > news >正文

棋盘问题c

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

Input

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

Output

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

Sample

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

#include<iostream>
using namespace std;
char a[100][100];
int n,k,dp[100],sum=0;
void dfs(int d,int k){//1 4
    if(k==0){
        sum++;
        return;
    }
    for(int i=d;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[i][j]=='.'||dp[j]==1){
            continue;    
            }
            dp[j]=1;
            dfs(i+1,k-1);
            dp[j]=0;
     }
    }
}
int main(){
    
    while(scanf("%d%d",&n,&k)){
        if(n==-1&&k==-1)return 0;
        for(int i=1;i<=n;i++){
            dp[i]=0;
            for(int j=1;j<=n;j++){
                cin>>a[i][j];
            }
        }
        sum=0;
        dfs(1,k);
        cout<<sum<<endl;
    }
    return 0;
}

http://www.lryc.cn/news/59552.html

相关文章:

  • 华纳云:Linux系统下怎么创建普通用户并更改用户组
  • 「她时代」背后的欧拉力量
  • kubespray v2.21.0 在线部署 kubernetes v1.24.0 集群【2】
  • 聚焦运营商信创运维,美信时代监控易四大亮点值得一试!
  • [python刷题模板] 博弈入门-记忆化搜索/dp/打表
  • I2C通信
  • 【Linux】man什么都搜不了,No manual entry for xxx的解决方案
  • STM32 库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别
  • 在 RISC-V Linux 内核中添加模块
  • 利用AOP实现统一功能处理
  • 会话技巧---英文单词
  • VS中解决方案和项目的区别
  • MyBatis的parameterType传入参数类型和resultType返回结果类型
  • 什么是Android FrameWork,请你介绍一下?
  • 【SQL 必知必会】- 第十六课 更新和删除数据
  • 常见哈希算法及其应用
  • PHP快速入门02-PHP语言基础
  • FSCapture - 长截图工具
  • [ 云计算 | Azure ] Chapter 05 | 核心体系结构之管理组、订阅、资源和资源组以及层次关系
  • 【算法LearnNO.1】算法介绍以及算法的时间复杂度和空间复杂度
  • 013:Mapbox GL添加marker
  • 智慧工厂可视化合集,推动行业数字化转型
  • 工作流调度系统 Azkaban介绍与安装(一)
  • 【Python基础入门学习】Python工具Pycharm的安装与使用
  • 【版本控制】Github同步Gitee镜像仓库自动化脚本
  • 索引的分类
  • 【整理九】
  • 钢网是SMT生产使用的一种工具,如何制作?
  • 如何创建自己的gym环境
  • 使用Marshaller 将Java对象转化为XML格式和字符串转为xml