棋盘问题
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 47741   Accepted: 23097

Description

在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放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

今天用一个全局变量count,快一个小时没编译过去,后来才发现count时C++的algorithm头文件一个库函数,怪不得死都不给过woc~╮(╯▽╰)╭菜鸡就得买教训

#include <iostream>
#include <string>
#include <stack>
#include <queue>
#include <map>
#include <algorithm>using namespace std;char vis[8][8];
int isSafe[8];
int sum;
int n;
int k;bool Safe(int x,int y) {if(isSafe[x] && vis[x][y] == '#') {return 1;}return 0;
}void dfs(int y,int num) { //mum已经放入棋盘的棋子个数if(num == k) { //全部放完为一种情况sum++;  return;}if(y >= n) {//列结束return;}for(int i = 0;i < n;i++) {if(Safe(i,y)) {isSafe[i] = 0;//第i行被放过dfs(y+1,num+1);//去下一列放置isSafe[i] = 1;//相当于把第i行放置的棋子给拿掉}}dfs(y+1,num);//当每列结束后去进行下一行
}int main(void) {while(cin >> n >> k) {if(n == -1 && k == -1) {break;}sum = 0;for(int i = 0;i < n;i++) {for(int j = 0;j < n;j++) {cin >> vis[i][j];}}for(int i = 0;i < n;i++) {isSafe[i] = 1;}dfs(0,0);cout << sum << endl;}return 0;
}

HDU 1321 棋盘问题相关推荐

  1. POJ 1321 棋盘问题(回溯)

    文章目录 1. 题目 1.1 题目链接 1.2 题目大意 1.3 解题思路 2. 代码 2.1 Accepted 代码 1. 题目 1.1 题目链接 http://poj.org/problem?id ...

  2. 1321:棋盘问题(深度优先搜索进阶)

    题目链接:http://bailian.openjudge.cn/practice/1321?lang=en_US 题意: 求在一个n*n的矩阵内棋盘内摆放k个棋子的方案,这些棋子不在同一行不在同一列 ...

  3. POJ 1321 棋盘问题【DFS】

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35493   Accepted: 17485 Descriptio ...

  4. POJ 1321 棋盘问题 搜索

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

  5. POJ 1321 棋盘问题 题解

    棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 70224 Accepted: 33254 Description 在一 ...

  6. poj 1321 棋盘问题(dfs)

    题目:http://poj.org/problem?id=1321 没什么难度,比较水... View Code 1 #include <iostream> 2 #include<c ...

  7. POJ - 1321 棋盘问题

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

  8. 深度优先搜索----poj 1321棋盘问题

    题目描述 棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 63237   Accepted: 30234 Descr ...

  9. pku 1321 棋盘问题 DFS

    http://poj.org/problem?id=1321 自己真是本了开始写了歌对于棋子有顺序的搜索,导致求出来是ans的阶乘种数了,因为k < n且不能在同一行同一列,只要按行搜索,记录列 ...

最新文章

  1. 基于WebGL架构的3D可视化平台—三维设备管理(ThingJS实现楼宇设备管理3D可视化)...
  2. 操作系统课设——吃水果问题
  3. 格式化输出--对齐及补全
  4. 计算机基础知识教程职称怎么计算,2017年职称计算机考试基础知识教程详解(二十)...
  5. inline-block清除空隙2
  6. 解决go build报错cannot find main module; see ‘go help modules‘
  7. 配置使用4台主机实现12台主机的集群
  8. SylixOS USB Gadget层介绍
  9. C++ 控制对象的创建方式和数量
  10. Opencv之以亚像素精度获取图片的ROI--cv.getRectSubPix
  11. C#昵图素材下载器源码可下我图、包图、千图等(带数据库)
  12. Solidity学习教程
  13. NVIDIA显卡驱动安装方法
  14. 软件工程之概要设计说明书
  15. Android网络框架情景分析之NetworkManagementService和Netd交互深入分析二
  16. 窄带包络Matlab分析,窄带随机过程的产生及其性能测试
  17. 【BP数据预测】基于matlab天牛须算法优化BP神经网络数据预测【含Matlab源码 1318期】
  18. 2021年12月电子学会图形化四级编程题解析含答案:聪明的小猫
  19. 软件的生命周期SDLC
  20. 安卓和鸿蒙系统,对标Apple Watch!魅族推首款智能手表,官宣接入华为鸿蒙系统...

热门文章

  1. ros::spin()和ros::AsyncSpinner
  2. 运放电路中电容的一些特殊用法
  3. 整型和短整型,有符号和无符号
  4. 无线的安全威胁与认证加密技术
  5. 软件测试人员必备的英语单词(一)
  6. 基于蒙特卡洛的电动车有序充放电(Matlab代码实现)
  7. 碎片化阅读对我的影响
  8. Chapter3.4:时域分析法
  9. 联想-G480-参数
  10. 【9502】子集问题