搜索(深搜/广搜/...)
文章平均质量分 69
ccDLlyy
不忘初心,方得始终
展开
-
HDU 2553 N皇后问题
题意:n*n棋盘要放n个皇后,要求意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45度角的斜线上,最多几种方案#include #include #include int lca[11];//存放每行皇后位置(列数)int count;//方案数int n;//棋盘规模void getcount(int row){ for(int i=1;i<=n;i++原创 2016-09-18 19:09:07 · 661 阅读 · 0 评论 -
POJ1022 四维魔方(转载他人)
Packing Unit 4D CubesDescriptionWe usually think that there are three geometric dimensions; the fourth dimension is usually time. However, the Association for Customizing Machine转载 2016-10-29 23:08:10 · 1544 阅读 · 0 评论 -
HDU 1253
Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,Ignatius每分钟能从一个坐标走到相邻的六个坐标中的其中一个.现在给你城堡的地图,请你计算出原创 2016-10-24 19:49:17 · 394 阅读 · 0 评论 -
code forces 377A
/*给定一个n*m的地图,这个地图初始化有s个空地,并且这s个空地是连通的。现在要求找到一种方案,放k个墙到这个地图,使得剩下的s-k个点还是连通的思路:因为初始化的地图是一个连通的,要求s-k个点也是连通的。那么我们只要对这个图搜索到s-k个连通的点,然后剩下的k个点全部放墙就可以了*///开始直接去广搜k个点成墙,殊不知可能行不通,如:/*原始数据为:5 4 4#...原创 2016-10-24 19:33:03 · 353 阅读 · 0 评论 -
POJ 3278
给出a和b点的横坐标,求到a,b的最小行动次数,其中每次行动只能是下面两种情况之一:一,向左或向右移动一步,即横坐标加1或者减1二,横坐标变成原来的两倍//比较经典的一道广搜//走到的每一点,搜索它所能到达的点(点的范围是0到100000)#include #include #include #define MAX 200010struct node{ int原创 2016-10-24 19:21:44 · 334 阅读 · 0 评论 -
POJ 1562
这个题就是说以@代表油田,它周边8个方向若有@则表示同一个油田。给你一个图,问你图中有多少个油田。//此题求独立子图的个数#include #include #include struct node{ int x; int y;};struct node queue[10005];int head;int tail;int book[101][101];原创 2016-10-24 19:14:48 · 414 阅读 · 0 评论 -
HDU 1728 逃离迷宫
Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因原创 2016-10-08 17:37:59 · 646 阅读 · 0 评论 -
啊哈算法 最小转机(图的广度优先遍历)
//图的广度优先遍历更适用于所有边的权值相等#include #include #define INF 100000struct node{ int num;//城市编号 int time;//转机次数};struct node queue[100];int head=0;int tail=0;int map[100][100];int book[100];//原创 2016-10-16 09:34:35 · 1470 阅读 · 0 评论 -
啊哈算法搜索应用之宝岛探险(BFS和DFS)
//广搜#include #include #include struct node{ int x; int y;};struct node queue[100];//队列实现广搜int head=0;int tail=0;int map[51][51];//存图int book[51][51];//标记走过的点int n;//图的规模int startx,原创 2016-10-04 16:06:07 · 1892 阅读 · 0 评论 -
啊哈算法搜索应用之再解炸弹人(DFS与BFS)
//广搜#include #include #include struct node{//存此点的坐标,消灭敌人数 int x; int y; int sum;};struct node queue[20];//队列实现BFSint head=0;int tail=0;char map[21][21];//存图int book[21][21];//标记走原创 2016-10-04 15:10:43 · 1343 阅读 · 3 评论 -
啊哈算法BFS应用之解救小哈
#include #include #include struct node{//各个位置的坐标,距起点距离用结构体封装起来 int x; int y; int distance;};struct node queue[100];//队列实现BFSint head=0,tail=0;int map[51][51];//存图int book[51][51];/原创 2016-10-03 18:03:53 · 2013 阅读 · 0 评论 -
DFS与BFS
从这几天通过啊哈算法,遇到的搜索中,大致总结出这几点规律:对于DFS:可有第一个点先确定的,做一下标记,以第一个为基础进行搜索;也可有从第一个点就没确定的,先去找第一个点,如1,2,3的全排列 还有一个问题,有的深搜,不用把标记过的元素再取消标记,这样的大多适用于不是去穷尽所有路径,而是看看哪些点能到达的,如,再解炸弹人(实原创 2016-10-05 23:01:43 · 2059 阅读 · 0 评论 -
学习搜索
搜索的实质(实质具体到两个搜索方法的表现形式)剪枝状态压缩。。。。。。。。。。。。待添加原创 2017-02-19 11:47:19 · 546 阅读 · 0 评论 -
HDU 1045 Fire Net(搜索/贪心/二分图最大匹配)
题目链接:点击打开链接题意:类似于八皇后问题,每行每列不能产生冲突,但此题图中有墙,两个碉堡如果隔了墙是可以放到同一行/列的。思路:一:搜索,由于数据规模很小,搜索是最直接的方式二:贪心,每个空地都有一个影响范围,一旦某块空地放置了碉堡,那么它的影响范围内所有空地都不能放碉堡了。贪心规则:每次选取影响范围最小的空地放置碉堡,然后就把这个空地影响范围内所有空地标记,按这种方法最后放置原创 2017-08-10 20:18:23 · 465 阅读 · 0 评论 -
POJ 3279 Fliptile(普通搜索)
题目链接:点击打开链接题意:给出m行、n列的棋盘,每一个格子只有两种状态0或1,每次可以选择一个格子执行翻转操作,并且与该格子相邻的4个格子都会被翻转,求将所有格子都翻转成0所需要的最小操作数,若有多种翻转方法,输出字典序最小的方案。思路:看到题目首先想到的为搜索,这题和之前做的求棋盘翻转到目标状态需要的最小次数的题很类似,可是这题让给出具体的翻转序列,这样就不能根据广搜只考虑状态变化了,原创 2017-08-04 23:52:37 · 337 阅读 · 0 评论 -
POJ 1579 Function Run Fun(记忆化搜索)
题目链接:点击打开链接题意很简单,记忆化搜索的水题......// POJ 1579 Function Run Fun.cpp#include #include #include #include using namespace std;int dp[25][25][25];int dfs(int a, int b, int c) { if (a <= 0 || b <=原创 2017-08-05 11:34:07 · 331 阅读 · 0 评论 -
2017百度之星初赛(A) 1006 度度熊的01世界(搜索连通块)
题目链接:点击打开链接思路:一开始看上去难以入手,大胆的暴力bfs/dfs即可,按照题意来,不要想多。题目对图像的定义是,图像0的定义:存在1字符且1字符只能是由一个连通块组成,存在且仅存在一个由0字符组成的连通块完全被1所包围;图像1的定义:存在1字符且1字符只能是由一个连通块组成,不存在任何0字符组成的连通块被1所完全包围。那就按照定义搜索一遍图像同时对不同连通块计数。cnt0表示不被1包原创 2017-08-15 13:10:51 · 484 阅读 · 0 评论 -
搜索时的剪枝
一:普通剪枝搜索时加入判断条件,越界没越界,走没走过,已经找到符合条件的路了吗......二:从起点到终点的最短路径的题走到一点,可判断是不是已经大于当前最短路径了,是不是此时的路径长度+到此时到终点最短距离已经大于当前最短路径了......三:从起点到终点的路径长度可否等于一个给出的距离,如HDU1010不光要判断是否已经找到符合条件的路了,还要进行奇偶性剪枝原创 2016-11-05 11:04:46 · 432 阅读 · 0 评论 -
Cola HDU1495
Description大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (SInput三个整数 : S 可乐的体积 , N 和 M是两个杯子的容量,以"0 0原创 2016-11-05 13:44:42 · 305 阅读 · 0 评论 -
Poj3126 prime
DescriptionThe ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices. — It is原创 2016-11-05 19:22:30 · 400 阅读 · 0 评论 -
深度优先搜索(DFS)
DFS (深度优先搜索) DFS(Depth-First-Search)深度优先搜索算法,是搜索算法的一种。是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点 。中文名深度优先搜索算法外文名DFS全 称Depth-First-Search功 能搜索结构的叶结点原创 2016-10-03 10:10:45 · 3764 阅读 · 0 评论 -
啊哈算法DFS应用之全排列
//输入一个数n(1<=n<=9),输出1~n的全排列#include #include int book[10];//标记排列中已有的数字int array[10];//排列int n;void dfs(int step){ if(step==n+1){ for(int i=1;i<=n;i++) printf("%d%c",arra原创 2016-10-03 15:45:41 · 1231 阅读 · 0 评论 -
啊哈算法DFS应用之解救小哈
#include #include int book[51][51];//标记走过的点int map[51][51];//存图int next[4][2]={{-1,0},{1,0},{0,-1},{0,1}};//存当前坐标要走的上下左右四个方向int n;//图的规模int locx,locy;//小哈位置 //假设小哼在(1,1)点int min=100000;//最短路径原创 2016-10-03 16:58:46 · 1454 阅读 · 0 评论 -
啊哈算法DFS应用之水管工游戏
//管子有六个状态,具体见啊哈算法#include #include #include struct node{ int x; int y;};struct node stack[100];//用栈存储路径int top=-1;int n;//图的规模int map[51][51];//存图int book[51][51];//标记走过的点void dfs(i原创 2016-10-04 17:28:33 · 1626 阅读 · 0 评论 -
POJ 1321
Description在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n 当为-原创 2016-10-07 22:38:46 · 460 阅读 · 0 评论 -
PAT 1003 Emergency
1003. Emergency (25)As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue te原创 2017-01-19 17:23:39 · 340 阅读 · 0 评论 -
2n皇后问题
给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。输入格式:输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数原创 2017-01-21 22:32:44 · 466 阅读 · 0 评论 -
POJ 2676
/*九宫格问题,也有人叫数独问题把一个9行9列的网格,再细分为9个3*3的子网格,要求每行、每列、每个子网格内都只能使用一次1~9中的一个数字,即每行、每列、每个子网格内都不允许出现相同的数字。 0是待填位置,其他均为已填入的数字。要求填完九宫格并输出(如果有多种结果,则只需输出其中一种)*/#include #include #include int map[10][10]原创 2016-10-24 19:42:04 · 311 阅读 · 0 评论 -
HDU 1016
素数环让你输出满足相邻的相加是素数的序列(注意不要重复)如:#include #include #include int stack[25];int top=-1;int book[25];int isprime[40];//初始化为0,不是素数的赋值为1int n;int count=0;void dfs(int step){ if(s原创 2016-10-24 19:28:41 · 400 阅读 · 0 评论 -
POJ 1426
给出一个整数n,(1 //题目说100位,实际上unsigned __int64即可#include #include int flag;void dfs(unsigned __int64 sum,int n,int location)//n为原数,sum为当前加到的数,location为当前位数{ if(flag)//已找到sum return;原创 2016-10-24 19:18:26 · 316 阅读 · 0 评论 -
HDU 1010 Bone 奇偶性剪枝
DescriptionThe doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He realized t原创 2016-11-05 10:02:14 · 384 阅读 · 0 评论 -
HDU 1078 FatMouse and Cheese(记忆化搜索)
题目链接:点击打开链接题意:n * n的地图,每个位置有若干奶酪,FatMouse初始位置在原点,每次可以跑向上下左右四个方向,距离原位置不超过k,而且下一个位置要比之前的位置的奶酪要多,到达一个位置就吃光该位置的奶酪,该过程直到FatMouse不能再移动为止,问FatMouse最多能吃多少奶酪?思路:记忆化搜索,dp[i][j]表示在(i,j)位置出发,最多能吃的奶酪数;由于FatMou原创 2017-08-07 16:34:51 · 351 阅读 · 0 评论 -
POJ 2362 Square(搜索+剪枝)
题目链接:点击打开链接题意:给定一些木棍,是否能拼成正方形(木棍不能折断)?思路:搜索,由题意,木棍要分别能组成四个边,不多不少。读取完数据,所有木棍的长度和要能整除4,而且最长的木棍不能超过边的长度,先做这俩处理再搜索,能节省时间。搜索时,顺序搜索每一条的组成情况,需要注意的是,为了不重复搜索,当前边选择木棍时,下一个处理的木棍的下标要比当前的大,而不能从最小的下标再开始选择,即原创 2017-08-07 21:33:46 · 666 阅读 · 0 评论 -
搜索剪枝
原创 2017-02-19 11:54:53 · 373 阅读 · 0 评论 -
POJ 1753(用到了状态压缩)
#include #include #include #include using namespace std;int step;int bfs(int start){ queue Queue; int book[65536],last=start; memset(book,0,sizeof(book)); Queue.push(start); book[start]=1;原创 2017-02-18 21:37:54 · 505 阅读 · 0 评论 -
FZU2150 fire
DescriptionFat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this board is consisting of grass or just empty and th原创 2016-11-05 21:27:16 · 449 阅读 · 0 评论 -
Wannafly模拟赛3 贝伦卡斯泰露(搜索+剪枝)
题目链接:点击打开链接思路:搜索+剪枝// 贝伦卡斯泰露 运行/限制:3ms/1000ms#include #include #include using namespace std;int n;int num[45], s1[45], s2[45];//s1表示序列1,s2为序列2bool dfs(int cnt1, int cnt2, int dep) { if (de原创 2017-10-14 18:14:47 · 563 阅读 · 1 评论