【搜索 回溯】 zoj 1002
题意:一些机枪彼此不能在同一行和同一列,但是由于有墙的阻隔,能保证子弹无法穿透,即可以同行同列,现问如果说给了一个n*n(n<=4)的矩阵,并给出了墙的分布情况,能否求出最大能繁殖的机枪数。
思路:之前按八皇后的思想一行一行搜,不理想,之后改成一个格一个格的搜,回溯要理解好就没问题。
#include <iostream> #include <cstdio> using namespace std; int n,best; ][]; int canput(int row,int col) { int i; ;i>=;i--) //如果(row,col)左面的先是遇到墙,则可行 { if(map[i][col]=='X') { break; } if(map[i][col]=='Y')//如果(row,col)左面的先是遇到机枪,则跪 { ; } } ;i>=;i--) //如果(row,col)上面的先是遇到墙,则可行 { if(map[row][i]=='X') { break; } if(map[row][i]=='Y')//如果(row,col)上面的先是遇到机枪,则跪 { ; } } ; } void backtrack(int k,int cur)//K表示放置炮塔的位置(1~16),cur表示当前放置的总数 { int x,y; if(k==n*n) { if(cur>best) { best=cur; } return; } else { x=k/n; y=k%n; if(map[x][y]=='.'&& canput(x,y)) { map[x][y]='Y'; backtrack(k+,cur+); //加入此机枪点,深度dfs map[x][y]='.'; //不加入此机枪点,回溯 } backtrack(k+,cur);//(x,y)能加入机枪却不加 和 不能加入机枪的两种情况统一在此处理 //即处理下一个点而认为不加入 } } int main() { // freopen("in.txt","r",stdin); ) { best=; ;i { ;j { char ch=getchar(); if(ch=='\n') //为了吸收每个句尾的回车 { j--; continue; } else map[i][j]=ch; } } backtrack(,); printf("%d\n",best); } ; }
【搜索 回溯】 zoj 1002的更多相关文章
- DFS ZOJ 1002/HDOJ 1045 Fire Net
题目传送门 /* 题意:在一个矩阵里放炮台,满足行列最多只有一个炮台,除非有墙(X)相隔,问最多能放多少个炮台 搜索(DFS):数据小,4 * 4可以用DFS,从(0,0)开始出发,往(n-1,n-1 ...
- nyist 488 素数环(搜索+回溯)
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 有一个整数n,把从1到n的数字无反复的排列成环,且使每相邻两个数(包含首尾)的和都为素数,称为素数环. ...
- Leetcode之深度优先搜索&回溯专题-491. 递增子序列(Increasing Subsequences)
Leetcode之深度优先搜索&回溯专题-491. 递增子序列(Increasing Subsequences) 深度优先搜索的解题详细介绍,点击 给定一个整型数组, 你的任务是找到所有该数组 ...
- Leetcode之深度优先搜索&回溯专题-980. 不同路径 III(Unique Paths III)
Leetcode之深度优先搜索&回溯专题-980. 不同路径 III(Unique Paths III) 深度优先搜索的解题详细介绍,点击 在二维网格 grid 上,有 4 种类型的方格: 1 ...
- Leetcode之深度优先搜索&回溯专题-679. 24 点游戏(24 Game)
Leetcode之深度优先搜索&回溯专题-679. 24 点游戏(24 Game) 深度优先搜索的解题详细介绍,点击 你有 4 张写有 1 到 9 数字的牌.你需要判断是否能通过 *,/,+, ...
- Leetcode之深度优先搜索&回溯专题-638. 大礼包(Shopping Offers)
Leetcode之深度优先搜索&回溯专题-638. 大礼包(Shopping Offers) 深度优先搜索的解题详细介绍,点击 在LeetCode商店中, 有许多在售的物品. 然而,也有一些大 ...
- [ZOJ 1002] Fire Net (简单地图搜索)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1002 题目大意: 给你一个n*n的地图,地图上的空白部分可以放棋 ...
- ZOJ 1002:Fire Net(DFS+回溯)
Fire Net Time Limit: 2 Seconds Memory Limit: 65536 KB Suppose that we have a square city with s ...
- ZOJ 1002 DFS
Fire Net Time Limit: 2 Seconds Memory Limit: 65536 KB Suppose that we have a square city with s ...
随机推荐
- HDU 2544 最短路(初涉SPFA算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t ...
- 日志输出--C#
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- Python从json中提取数据
#json string:s = json.loads('{"name":"test", "type":{"name": ...
- matlab mse函数
mse是检验神经网络算法的误差分析; mse是平均平方误差性能函数,是网络性能函数.平方误差就是指误差的平方.
- js中两个感叹号的原理与用法分析(转载记录没找到原帖)
var foo; alert(!foo);//undifined情况下,一个感叹号返回的是true; alert(!goo);//null情况下,一个感叹号返回的也是true; var o={flag ...
- php字符操作
//一:定义字符串的方法 //1.双引号 //2.单引号 //3.heredoc语法结构 //heredoc语法定义字符串 $str=<<<TAG 我的武功终成武林盟主TAG;//注 ...
- PureLayout
PureLayout 是 iOS & OS X Auto Layout 的终极 API——非常简单,又非常强大.PureLayout 通过一个全面的Auto Layout API 扩展了 UI ...
- C# html转mht
项目中引入cdosys.dll组件,位置: C:\Windows\System32\cdosys.dll CDO.ADODB 这些类都来自于cdosys.dll组件 /// <summary& ...
- FreeMarker 实例
1.jar包:freemarker-2.3.19.jar,将jar拷贝到lib目录下: 2.新建Web项目:TestFreeMarker 在web目录下新建ftl文件夹: 在ftl下新建模版文件ftl ...
- C/C++语言的标准库函数malloc/free与运算符new/delete的区别
概括地说 1.malloc与free是C++/C的标准库函数,new/delete是C++的运算符,它们都可用于申请动态内存和释放内存. 2.对于非内部数据类型的对象而言,只用malloc/free无 ...