poj 1321 排兵布阵问题 dfs算法
题意:有不规则地图,在上面放n个相同的棋子,要求摆放的时候不同行不同列。问:有多少种摆法?
思路:dfs+回溯
- 用一个book[]数组来表示当前列是否有放棋子
- 一行一行的遍历,对一行来说遍历它的列,如果满足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算法相关推荐
- hdu4539 郑厂长系列故事——排兵布阵 + POJ1158 炮兵阵地
题意: 郑厂长系列故事--排兵布阵 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Other ...
- 洛谷 P5322 [BJOI2019]排兵布阵
P5322 [BJOI2019]排兵布阵 题目大意:玩游戏~~,对于 n 个城堡,有 m 个士兵可以分别派遣到这些城堡. 同时我们有 s 个对手,在每个城堡都会与每个玩家单独比拼,在第 i 个城堡与每 ...
- 策略模式 — 孔明排兵布阵
前言 本文转载自威威喵,分享了常见的策略模式,非常生动,相信对大家有所帮助. 威威喵的博客地址 https://blog.csdn.net/smile_Running/article/details/ ...
- HDU 4539郑厂长系列故事――排兵布阵(状压DP)
HDU 4539 郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 1 //#pragma ...
- 「BJOI 2019」排兵布阵
传送门 problem 小 C 正在玩一款排兵布阵的游戏.在游戏中有 nnn 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 mmm 名士兵,可以向第 iii 座城堡派遣 aia_iai 名士 ...
- hdu 1166 排兵布阵
/* *********************************************** Author :xryz Email :523689985@qq.com Created Time ...
- ASDFZ 3633 -- 排兵布阵
Description 小 X 是生活在 9102 年的一位高二的 OIer,也是本套模拟题的主角. 这是一件往事了-- 小 X 正在玩一款排兵布阵的游戏,这时候小 R 突然来找小 X 出去陪她玩. ...
- [BJOI2019] 排兵布阵(分组背包)
[BJOI2019] 排兵布阵 题目描述 小 C 正在玩一款排兵布阵的游戏.在游戏中有 nnn 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 mmm 名士兵,可以向第 iii 座城堡派遣 ai ...
- 洛谷 P1911 L国的战斗之排兵布阵
P1911 L国的战斗之排兵布阵 题目背景 L国即将与I国发动战争!! 题目描述 L国的指挥官想让他的每一个军营都呈现出国徽形--"L"形(方向无所谓).当然,他的指挥营除外(这叫 ...
最新文章
- 事务隔离机制原理深入分析以及MySQL不同隔离级别分场景下实验对比
- 5.hadoop常用命令
- 学习vue中遇到的报错,特此记录下来
- python处理excel教程实例-python如何处理excel数据
- Serverless的4种错误打开方式
- Nmap中文手册浅析
- Java:可选的可选实现
- php7 setcookie无效_php COOKIE介绍和setcookie有时会在ie下失效问题
- arcengine动态显示所需字段值
- 高效程序猿之(四)VS2010其他技巧(转)
- 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确
- dos2unix 安装和使用
- 清华 计算机 学神 李凌,清华大学计算机科学与技术系 2018 年接收推荐免试.PDF...
- 利用OD去软件弹窗广告教程-[WinRAR_3.9]为例
- ME525+ 刷机工具及设置中心号码
- python基础总结02
- 适用于主流浏览器导出Excel表格的代码
- android 高德地图GPS点校正
- 【机器人仿真Webots教程】-Webots安装
- 近红外荧光染料Pep-1/MMPs-PEG-ICG,细胞穿膜肽Pep-1/基质金属蛋白酶MMPs-聚乙二醇-吲哚菁绿
热门文章
- acm竞赛可以用python吗_ACM竞赛到底有多大用处?有害还是有益?
- java延迟1秒_java 等待一秒方法
- Http——超文本传输协议
- raid1硬盘计算机能读取,1,如何计算各种RAID硬盘的容量? ? ?
- c++ 崩溃 正则表达式regex_C++正则表达式regex初探及踩的坑
- python的socket
- OR1200处理器中Wishbone总线接口模块WB_BIU介绍
- Kubernetes监控:Dashbaord 2.0.0部署方式
- 【lua编程 控制手机进行聊天】--用于养号、可以放下手进行自动化聊天养号了
- 如果我们能正预基面因子