题意:有不规则地图,在上面放n个相同的棋子,要求摆放的时候不同行不同列。问:有多少种摆法?

思路:dfs+回溯

  1. 用一个book[]数组来表示当前列是否有放棋子
  2. 一行一行的遍历,对一行来说遍历它的列,如果满足book[i] == 0 && map[cur][i] == '#'  则可以摆放,然后继续遍历下一行

代码上需要注意的地方:

for (int i = 0; i<n; i++)if (book[i] == 0 && map[cur][i] == '#'){book[i] = 1;m++;dfs(cur + 1);book[i] = 0;m--;}

其中有个回溯的操作,为什么?

因为如果当前没有执行dfs(cur+1)这个语句的话,说明i这个位置不能摆放棋子,或者说摆放棋子不妥。所以需要往回标记

解决问题的代码:

#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;
char map[9][9];
int n, k;
int total, m;
int book[9];
void dfs(int cur)
{if (k == m){total++;return;}if (cur >= n)return;for (int i = 0; i<n; i++)if (book[i] == 0 && map[cur][i] == '#'){book[i] = 1;m++;dfs(cur + 1);book[i] = 0;m--;}dfs(cur + 1);
}
int main()
{while (scanf("%d%d", &n, &k) != EOF){if (n == -1 && k == -1)break;for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)cin >> map[i][j];dfs(0);printf("%d\n", total);m = total = 0;}return 0;
}

转载于:https://www.cnblogs.com/xuxiaojin/p/9405546.html

poj 1321 排兵布阵问题 dfs算法相关推荐

  1. hdu4539 郑厂长系列故事——排兵布阵 + POJ1158 炮兵阵地

    题意: 郑厂长系列故事--排兵布阵 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Other ...

  2. 洛谷 P5322 [BJOI2019]排兵布阵

    P5322 [BJOI2019]排兵布阵 题目大意:玩游戏~~,对于 n 个城堡,有 m 个士兵可以分别派遣到这些城堡. 同时我们有 s 个对手,在每个城堡都会与每个玩家单独比拼,在第 i 个城堡与每 ...

  3. 策略模式 — 孔明排兵布阵

    前言 本文转载自威威喵,分享了常见的策略模式,非常生动,相信对大家有所帮助. 威威喵的博客地址 https://blog.csdn.net/smile_Running/article/details/ ...

  4. HDU 4539郑厂长系列故事――排兵布阵(状压DP)

    HDU 4539  郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 1 //#pragma ...

  5. 「BJOI 2019」排兵布阵

    传送门 problem 小 C 正在玩一款排兵布阵的游戏.在游戏中有 nnn 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 mmm 名士兵,可以向第 iii 座城堡派遣 aia_iai​ 名士 ...

  6. hdu 1166 排兵布阵

    /* *********************************************** Author :xryz Email :523689985@qq.com Created Time ...

  7. ASDFZ 3633 -- 排兵布阵

    Description 小 X 是生活在 9102 年的一位高二的 OIer,也是本套模拟题的主角. 这是一件往事了-- 小 X 正在玩一款排兵布阵的游戏,这时候小 R 突然来找小 X 出去陪她玩. ...

  8. [BJOI2019] 排兵布阵(分组背包)

    [BJOI2019] 排兵布阵 题目描述 小 C 正在玩一款排兵布阵的游戏.在游戏中有 nnn 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 mmm 名士兵,可以向第 iii 座城堡派遣 ai ...

  9. 洛谷 P1911 L国的战斗之排兵布阵

    P1911 L国的战斗之排兵布阵 题目背景 L国即将与I国发动战争!! 题目描述 L国的指挥官想让他的每一个军营都呈现出国徽形--"L"形(方向无所谓).当然,他的指挥营除外(这叫 ...

最新文章

  1. 事务隔离机制原理深入分析以及MySQL不同隔离级别分场景下实验对比
  2. 5.hadoop常用命令
  3. 学习vue中遇到的报错,特此记录下来
  4. python处理excel教程实例-python如何处理excel数据
  5. Serverless的4种错误打开方式
  6. Nmap中文手册浅析
  7. Java:可选的可选实现
  8. php7 setcookie无效_php COOKIE介绍和setcookie有时会在ie下失效问题
  9. arcengine动态显示所需字段值
  10. 高效程序猿之(四)VS2010其他技巧(转)
  11. 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确
  12. dos2unix 安装和使用
  13. 清华 计算机 学神 李凌,清华大学计算机科学与技术系 2018 年接收推荐免试.PDF...
  14. 利用OD去软件弹窗广告教程-[WinRAR_3.9]为例
  15. ME525+ 刷机工具及设置中心号码
  16. python基础总结02
  17. 适用于主流浏览器导出Excel表格的代码
  18. android 高德地图GPS点校正
  19. 【机器人仿真Webots教程】-Webots安装
  20. 近红外荧光染料Pep-1/MMPs-PEG-ICG,细胞穿膜肽Pep-1/基质金属蛋白酶MMPs-聚乙二醇-吲哚菁绿

热门文章

  1. acm竞赛可以用python吗_ACM竞赛到底有多大用处?有害还是有益?
  2. java延迟1秒_java 等待一秒方法
  3. Http——超文本传输协议
  4. raid1硬盘计算机能读取,1,如何计算各种RAID硬盘的容量? ? ?
  5. c++ 崩溃 正则表达式regex_C++正则表达式regex初探及踩的坑
  6. python的socket
  7. OR1200处理器中Wishbone总线接口模块WB_BIU介绍
  8. Kubernetes监控:Dashbaord 2.0.0部署方式
  9. 【lua编程 控制手机进行聊天】--用于养号、可以放下手进行自动化聊天养号了
  10. 如果我们能正预基面因子