[面试备] 暴搜 or 二分图的经典升级 : hdu 1045 Fire Net 示例 [ 讲解之用 ]
来源:互联网 发布:呼和浩特乾宇网络 编辑:程序博客网 时间:2024/06/05 17:33
题意:
现有一座n*n(0<=n<=4)的大城市,要你在没有障碍的地方放炮台,每个炮塔都会有向四面射击的机枪,子弹能够击穿本行本列所有除障碍物的其他物品。问你最多能放多少炮台。
解法:
dfs+回溯 如果题目数据大一点还要用到二分匹配。我好喜欢的一道题目!
现有一座n*n(0<=n<=4)的大城市,要你在没有障碍的地方放炮台,每个炮塔都会有向四面射击的机枪,子弹能够击穿本行本列所有除障碍物的其他物品。问你最多能放多少炮台。
解法:
dfs+回溯 如果题目数据大一点还要用到二分匹配。我好喜欢的一道题目!
#include <iostream>#include <string>#include <cstring>#include <cstdlib>#include <cstdio>#include <cmath>#include <vector>#include <stack>#include <deque>#include <queue>#include <bitset>#include <list>#include <map>#include <set>#include <iterator>#include <algorithm>#include <functional>#include <utility>#include <sstream>#include <climits>#include <cassert>#define BUG puts("here!!!");using namespace std;const int N = 4;char mmap[N][N];int n, mmax;bool ok(int x, int y) {if(mmap[x][y] != '.') return false; for(int i = y-1; i >= 0; i--) {if(mmap[x][i] == 'X') break;if(mmap[x][i] == 'B') return false;}for(int i = x-1; i >= 0; i--) {if(mmap[i][y] == 'X') break;if(mmap[i][y] == 'B') return false;}return true;}void dfs(int pos, int num) {if(pos == n*n) {if(num > mmax) mmax = num;return;}int x = pos / n;int y = pos % n;if(ok(x, y)) {mmap[x][y] = 'B';dfs(pos+1, num+1);mmap[x][y] = '.';}dfs(pos+1, num);}int main() {while(cin >> n, n) {mmax = -1;for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {cin >> mmap[i][j];}}dfs(0, 0);cout << mmax << endl;}return 0;}
- [面试备] 暴搜 or 二分图的经典升级 : hdu 1045 Fire Net 示例 [ 讲解之用 ]
- [面试备] 暴搜 or 二分图的经典升级 : hdu 1045 Fire Net 示例 [ 二分图 ]
- hdu 1045 Fire Net (二分图)
- HDU 1045 Fire Net 二分图
- HDU 1045 Fire Net (二分图的最大匹配)
- HDU 1045 Fire Net 详细题解(二分图经典模型)
- hdu 1045 Fire Net (dfs || 二分图)
- hdu 1045 Fire Net(二分图匹配)
- HDU 1045 Fire Net 二分图Bipartite题解
- HDU 1045 Fire Net 最大二分图匹配
- HDU 1045 Fire Net (dfs 或 二分图)
- HDU 1045 Fire Net(二分图最大匹配)
- HDU 1045 Fire Net(二分图最大匹配)
- HDU 1045 Fire Net(搜索/贪心/二分图最大匹配)
- hdu-1045-Fire Net-二分图匹配-匈牙利算法-java
- HDU 1045 Fire Net(建模,用二分匹配)
- hdu 1045Fire Net (建图 、二分匹配)
- hdu 1045 Fire Net-二分匹配
- [算法] 匈牙利算法 poj 1274 示例 [ 二分图匹配 入门篇 ] O(n*m) Hopcroft O(sqrt(n)*m)
- RTP负载类型及时间戳介绍
- 黑马程序员:代理模式(Proxy)
- 位运算中的一些小技巧
- 假期第一天!
- [面试备] 暴搜 or 二分图的经典升级 : hdu 1045 Fire Net 示例 [ 讲解之用 ]
- filezilla
- 黑马程序员_java mail学习
- JSON 数据格式
- 简析sqlserver触发器以及如何使用sql 触发器
- AS3.0用代码控制播放一段视频
- UVA 10564 Paths through the Hourglass
- 开源库 pjnath的改造,异步接口 修改 为 同步 超时返回 接口
- 重新再写如何ios中解析xml文件