题目链接:http://acm.hrbust.edu.cn/vj/index.php?/vj/index.php?c=&c=contest-contest&cid=134#problem/1

大概用二分图缩点建图是比较简单的。深搜也遇见了一些问题。

比如。深搜的临界点我还是要单独判断最后一个点是不是符合条件的。这不科学。

然后。判断当前点所在行和列是不是符合条件的时候。我是只判断了它前面的,大概就是,所有满足条件的几个位置我都是优先放在最前面?但是好像深搜已经把左右的情况都包括了吧。T_T还不太懂。

// dfs + 深搜

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std; int n;
char mp[][];
int ans; bool check(int row, int col) {
for (int i=col-; i>=; --i) {
if (mp[row][i] == 'a') { // 检查该行是否已经有没墙阻隔的大炮。
return false;
}
else if (mp[row][i] == 'X')
break;
} for (int i=row-; i>=; --i) {
if (mp[i][col] == 'a') { // 检查该列是否已经有没有墙阻隔的大炮了。
return false;
}
else if (mp[i][col] == 'X') {
break;
}
}
return true;
} void dfs(int con, int tot) {
if (con == n*n-) {
if (mp[n-][n-] == '.' && check(n-, n-))
ans = max(ans, tot);
else ans = max(ans, tot-);
return;
} int row = con / n;
int col = con % n; if (mp[row][col] == '.' && check(row, col)) {
// cout << con << "......" << tot << endl;
mp[row][col] = 'a';
dfs(con+, tot+);
mp[row][col] = '.';
}
dfs(con+, tot);
} int main() {
while(cin >> n) {
if (n == ) break;
for (int i=; i<n; ++i) {
for (int j=; j<n; ++j) {
cin >> mp[i][j];
}
} ans = ;
dfs(, ); // 第一个参数表示当前格子的编号 第二个参数表示当前要安装的大炮编号。
//cout << "====";
cout << ans << endl;
}
return ;
}

HDU 1045 dfs + 回溯的更多相关文章

  1. HDU 1045 (DFS搜索)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1045 题目大意:在不是X的地方放O,所有O在没有隔板情况下不能对视(横行和数列),问最多可以放多少个 ...

  2. HDU 1045 dfs

    Fire Net Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  3. HDU 1016 Prime Ring Problem(经典DFS+回溯)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  4. HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)

    哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. HDOJ(HDU).1045 Fire Net (DFS)

    HDOJ(HDU).1045 Fire Net [从零开始DFS(7)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HD ...

  6. HDU 1016 素数环(dfs + 回溯)

    嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 一道很典型的dfs+回溯: 根据题意首先进行初始化,即第一个位置为1,然后进行dfs, ...

  7. 【HDU - 2181】哈密顿绕行世界问题(dfs+回溯)

    -->哈密顿绕行世界问题 Descriptions: 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市.  Input 前2 ...

  8. hdu 1045 Fire Net(最小覆盖点+构图(缩点))

    http://acm.hdu.edu.cn/showproblem.php?pid=1045 Fire Net Time Limit:1000MS     Memory Limit:32768KB   ...

  9. HDU 1045(Fire Net)题解

    以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定大小的棋盘中部分格子存在可以阻止互相攻击的墙,问棋盘中可以放置最多多少个可以横纵攻击炮塔. [题目分析] 这题本来在搜索专题 ...

随机推荐

  1. BBS - 预备知识

    一.中介模型 四个项目: 苑昊 博客(BBS) (7-8) CRM 1.权限组件 (3) 2.start组件 -- admin (5) 1.使用 2.源码 django 源码 (面向对象) 以源码为导 ...

  2. hive引入jar包--HIVE.AUX.JARS.PATH和hive.aux.jars.path

    hive需要引入包时?该怎么引入? 一.hive-site.xml中的hive.aux.jars.path 此配置项对于hive server有效,但是是不会作用到hive shell.也就是说即使你 ...

  3. hbase Java API 介绍及使用示例

    几个相关类与HBase数据模型之间的对应关系  java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) ...

  4. windows下和linux下libcurl安装

    下载源代码,在winbuild里面有个说明文件: Building with Visual C++, prerequisites==================================== ...

  5. 限制可编辑div只能输入纯文本

    本博客转载自张鑫旭大神的一篇文章:小tip: 如何让contenteditable元素只能输入纯文本,原文地址:http://www.zhangxinxu.com/wordpress/2016/01/ ...

  6. Linux系统——Nginx基础

    Nginx是一个开源的,支持高性能.高并发(特别是静态资源)的www服务和代理服务软件,还具有反向代理复杂均衡功能和缓存服务功能,与lvs负载均衡及Haproxy等专业代理软件相比,nginx部署更简 ...

  7. redis入门学习记录(一)

    1.linux在线下载Redis ,官网地址:https://redis.io/download目前,最新的Redist版本为redis-5.0.0,使用wget下载 进入/usr/local/src ...

  8. 如何使用STM32F4的BootLoader和APP程序

    源:如何使用STM32F4的BootLoader和APP程序 STM32 BootLoader升级固件

  9. Centos75 安装 postgresql11

    切换到root账户, #安装yum 源 yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_6 ...

  10. 从官网学习Node.js FS模块方法速查

    最新文档请查看仓库 https://github.com/wangduandu... 1. File System 所有文件操作提供同步和异步的两种方式,本笔记只记录异步的API 异步方式其最后一个参 ...