暴力搜索
【linux嵌入式】玩家
linux嵌入式玩家
展开
-
Fill UVA - 10603(A*)
题目大意:给你三个瓶子,并且给你他们的体积分别是a,b,c,但是一开始第一个和第二个杯子是空的,只有第三个是满的,然后给你一个d,问你通过许多次倒水使得其中一个水杯的体积为d,你倒的水的最小值是多少?思路:他求的是倒水的最小值,并不是倒水的最小次数,先把这个分清楚。先把三个目前状态下的状态存储起来,然后每次选倒水量最小的(A*思路)损失函数G=水的量+到当前状态的水量。用优先队列存储,...原创 2019-09-15 17:31:02 · 146 阅读 · 0 评论 -
P1379 八数码难题(A*启发式搜索+map判断)
题目描述在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。输入格式输入初始状态,一行九个数字,空格用0表示输出格式只有一行,该行只有一个数字,表...原创 2019-09-14 22:35:44 · 246 阅读 · 0 评论 -
The Morning after Halloween UVA - 1601(bfs)
题目大意:小写字母到对应的大写字母是最短路径是多少?其中小写字母有多个,最多三个,然后每个字母有五种方向,上下左右不动,#称为墙不可走,其他是可走,称为走廊。思路:1:给可以走的走廊编号,对每条走廊建邻接表,然后bfs遍历这张表找最短路(遍历有点技巧,O(N^3)的邻接表遍历)。2:学到的新技巧,对于三个数给他编码成一个数存到queue,然后解码取出三个数,编码:((a<<...原创 2019-09-16 22:37:48 · 117 阅读 · 0 评论 -
Patrol Robot UVA - 1600(多障碍bfs)
题目大意:给你一个m*n的矩阵,a[i][j]=0,表示可以走,=1表示障碍,起点是(1,1,)终点是(m,n),问你从起点到终点的最短路径,另外还给你一个k,表示你可以走障碍的最多步数。思路:这个题乍一看和普通bfs一样,但是我们平时做的大部分都是k=0的情况,这题它多了一个条件,就是你可以沿着某个方向走最多k个障碍物,这使得题目变得复杂起来了。为了解决这个问题,我们需要描述障碍的步数,但...原创 2019-09-09 19:56:37 · 122 阅读 · 0 评论 -
Knight Moves UVA - 439(bfs)
题目大意:在一个8*8的国际想起内,你是国际象棋中马这个角色,然后行从1-8,列从a-h编号,给出起点和终点,问你的最短路径。(马走日子)思路:简单的bfs,被scanf(“%s%s”)卡了两次,玄学,改成scanf(" %c %c %c %c",&s1[0],&s1[1],&s2[0],&s2[1])就过来,思路还是挺简单的。代码:#include<...原创 2019-09-09 15:42:49 · 112 阅读 · 0 评论 -
Abbott's Revenge UVA - 816(四维数组bfs)
题目大意:给你一个起点和一个终点,并且给出了一个起点可以走的方向,问你从起点到终点的最短路径是什么?其中每个点又有四个方向,每个方向还有三种方向(分别是直,左右走)。分析:一般我们存迷宫都是用一个二维数组存坐标就行了,但是这个题对应的数组a[x][y]又有四个方向,所以可以想到用a[x][y][d]三维数组存x,y下标对应的方向(因为不一定四个方向一定是有方向的),然后又每个方向上还有...原创 2019-09-06 13:32:00 · 249 阅读 · 0 评论 -
Trees on the level UVA - 122(建树+bfs)
题意:输入文件尾个序列形如(data,左子树or 右子树),然后让你层次遍历它,如果出现存在某个节点的父节点不存在或者某个节点出现多次,输出:not complete。难点:输入和建树wa了一次貌似是没有把树释放。然后学到两个函数sscanf(&s[1],"%d",&v);//从char[]中第1个元素开始中的数字部分读入int型变量vstrchr(s,’,’)+1//...原创 2019-09-03 20:44:51 · 117 阅读 · 0 评论 -
Fire! uva11624(bfs)
题目大意:在一个迷宫内有k个火点,火会上下左右四处扩散/每秒,给出人的位置,人也会上下左右移动/每秒,问你人能不能在火没烧到人之前离开,如果可以输出最少离开需要的时间,如果不可以输出:“IMPOSSIBLE”。思路:因为可能不止只有一处火,需要用队列把火存起来,然后用两个数组存储人和火种到可以去的地方‘。’需要的时间,然后两个bfs就行了,第一个bfs存火种去各个地方的时间,第一个bfs找人...原创 2019-09-01 20:41:12 · 146 阅读 · 0 评论 -
Dungeon Master poj2251(三维bfs)
Dungeon MasterTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 62953 Accepted: 23024DescriptionYou are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is comp...原创 2019-08-26 15:19:15 · 265 阅读 · 0 评论 -
Find a way hud2612(双向bfs)
Find a wayTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 32255 Accepted Submission(s): 10327Problem DescriptionPass a year learning in H...原创 2019-08-26 13:03:04 · 151 阅读 · 0 评论 -
Find The Multiple poj1426(bfs)
Find The MultipleTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 51527 Accepted: 21543 Special JudgeDescriptionGiven a positive integer n, write a program to find out a nonzero multip...原创 2019-08-25 19:38:39 · 135 阅读 · 0 评论 -
Catch That Cowpoj3278(bfs)
Catch That CowTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 146523 Accepted: 45039DescriptionFarmer John has been informed of the location of a fugitive cow and wants to catch her im...原创 2019-08-25 18:17:01 · 94 阅读 · 0 评论 -
迷宫问题 poj3948(bfs+回溯)
迷宫问题Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 45910 Accepted: 25166Description定义一个二维数组:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0...原创 2019-08-25 18:09:40 · 167 阅读 · 0 评论 -
Cutting Chains UVA - 818(二进制枚举+dfs)
题目大意:给你n个环,并且有些环是已经连接了的,例如样例5 1 2 2 3 3 4 51和2已经连接,2和3已经连接,3和4已经连接,4和5已经连接,问你让他们组成一个链最少需要打开的次数,这时123,45组成了两个环,这时我们只需要把4打开链接3和5然后再次关闭,打开次数为1,或者打开3也是一样的。思路:https://www.cnblogs.com/dwtfukgv/p/56016...原创 2019-09-23 21:18:15 · 151 阅读 · 0 评论 -
Golygons UVA - 225(dfs)
题目大意:从(0,0)出发往四个方向前进,每次前进1步,例如第一个一步(0,0)-》(0,1),第二次+1步就是(0,3),但是不能一直往同一个方向走和往回走,问你从起点到出发又回到起点了路径有多少条并输出来。思路:第一份代码:因为坐标是负数,我用一个数组去映射,然后比较的时候一一遍历。另外题目没说清楚,访问过一次了的点下次是不能再访问的。还有不能穿越障碍物。把这几个因素考虑到大...原创 2019-09-22 14:47:10 · 190 阅读 · 0 评论 -
P1691 有重复元素的排列问题(dfs or stl)
解法一:基于字典树的思想dfs,字典树我之前有写过。代码:#include<string>#include<iostream>using namespace std;int sum;int n;string s;int sn[510];char ch[510];void dfs(int depth, char ch[]) { if (depth &...原创 2019-08-03 13:46:24 · 167 阅读 · 0 评论 -
1439: 迷宫问题(dfs)
我把思路写在代码里面把,挺有意思的一道题。第一次做这种迷宫题,可能代码不是很精简,继续努力,总体思路听清晰的。#include<bits/stdc++.h>using namespace std;int n;int maze[15][15];int ans;int vis[105][105];void dfs(int row,int col){ if(row==0&...原创 2019-08-03 20:50:51 · 154 阅读 · 0 评论 -
P1692 部落卫队(dfs+剪枝)
一道dfs题,先把所有的关系存到邻接矩阵,然后搜索,然后既然存到邻居矩阵了,就可以把每个人看作是一个顶点,然后搜索每一个顶点,从第一个点开始那么他有两种选择,第一:可以把他放进解中。第二:我也可以把他不放进解中,把这两种情况到考虑到了就好做题目了,但是这里存在一个问题,就是时间复杂度太高了,所以我们需要良性剪枝,如果当前解的个数加上后面全部解还比我的最大解小,那么这个解无需搜索,因为不满足题意(...原创 2019-08-04 14:18:03 · 493 阅读 · 0 评论 -
工作分配问题(dfs+剪枝)
很简单的一题,昨天看到标签是网络流就没做,今天又重新看了一下,发现其实挺简单,和求全排列没有区别只需要将全排列求和找最小值就可以了,需要稍微剪一下枝。ac代码:#include<bits/stdc++.h>using namespace std;int n;int graph[25][25];int vis[25];int s;int path[25];int Mi...原创 2019-08-04 15:27:54 · 439 阅读 · 0 评论 -
Oil Deposits poj1562(bfs)
Oil DepositsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 23695 Accepted: 12303DescriptionThe GeoSurvComp geologic survey company is responsible for detecting underground oil deposit...原创 2019-08-25 21:20:20 · 101 阅读 · 0 评论 -
Tree UVA - 548(建树+dfs)
题目大意:给你中序遍历序列和后序遍历序列,要你找出这棵树中从根节点到任意叶子节点的最小值中的叶子节点的值。难点:输入,建树学到两个不错的技巧or函数?if(!getline(cin,line))return false;//getline(cin,str)可以将空格作为字符串读入 ,并且当读到文件尾返回0stringstream ss(line);//文件流while(ss>...原创 2019-09-03 22:15:29 · 105 阅读 · 0 评论 -
Equilibrium Mobile UVA - 12166(dfs)
题目大意:给你一个天平字符串,天平有两个磅秤,天平可以嵌套天平,磅秤的值可以任意修改,问你要使天平平衡最少要修改几个磅秤。参考文献:https://blog.csdn.net/crazysillynerd/article/details/43876123思路:因为天平的结构就是一棵二叉树,要使天平平衡则一定需要一个磅秤作为参考,在知道磅秤的重量w和深度下可以求出这个数的总重量=w*pow(...原创 2019-09-10 21:43:00 · 104 阅读 · 0 评论 -
Prime Ring Problem UVA - 524(dfs)
题目大意:给你一个n要你输入每个数的两两之间的和是素数有多少种组合方法,第一个数永远是1.思路:就是求全排列不过加了一个限制条件就是两两之间的和是素数,这个很好解决。不过我感觉我的代码有点丑了。。。。。代码:#include<iostream>#include<cmath>#include<cstring>using namespace std;...原创 2019-09-13 18:02:21 · 132 阅读 · 0 评论 -
Bandwidth UVA - 140(dfs)
题目大意:给你一个图有n个节点m条边,输入的形式:A:FB;表示从节点A到F和B各有一条边,你可以任意改变字节点的位置,然后求他的最大距离,有n!种组合,问你所有最大值的组合中最小值是多少?输出并且打印。思路:先用图建边,然后dfs求排列找最大距离,然后找所有最大距离的最小值。我对深度建立了一个索引,还有一个麻烦的地方,输入的可能是随机字母而不是连续的,所以还需要一个数组存字母,判断的时...原创 2019-09-14 13:55:38 · 96 阅读 · 0 评论 -
Firetruck UVA - 208(dfs+bfs判联通)
题目大意:在一个无向图中最多有25个消防站,然后从消防站1出发到n的路径全部输出。思路:裸的dfs,不过在搜的时候先判断1能不能去k,因为一旦不能去,dfs就会出不来,出不来就会tel,判断用bfs就行。代码:#include<bits/stdc++.h>using namespace std;const int maxn=1005;int n;int a[max...原创 2019-09-21 12:33:44 · 138 阅读 · 0 评论 -
The Domino Effect UVA - 211(dfs)
题目大意:给你一个7*8的网格,每个网格摆了一张牌,牌通过相邻组合成对应的编号(1到28),问你最多有多少种组合并且输出它。思路:参考了别人的代码,思路奇特首先对牌的所有组合做成对应的编号,方便直接索引(二维数组实现)应该牌只能横向或者纵向组合,设置两个方向。dfs一列一列的搜,搜到每列最后一个元素换一行搜。代码:#include<bits/stdc++.h>us...原创 2019-09-21 22:45:02 · 100 阅读 · 0 评论 -
P1219 八皇后(dfs+回溯)
这两天在做搜索题,然后遇到了这个题,一不小心就解出来了,感觉还是有点意思,就拿出来分享一下。题目描述检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列2 4 6 1 3 5来描述,第i个数字表示在第i行的相应位置有一个棋子,如下:行号 1 2 3 4 5 6列号 2 ...原创 2019-08-03 10:47:34 · 137 阅读 · 0 评论