随笔分类 - ACM_搜索
摘要:题意:有一个n*m大的农场,其中每一方格不是干旱就是潮湿,现在给出k个潮湿的方格信息(即每个潮湿方格的坐标),如果每个方格与其四连通的其中一个方格连通则构成一个湖泊,该湖泊所包含的方格数就是该湖泊的大小,现在要求构成的湖泊中最大的那个湖泊所包含的方格数。输入:3 4 53 22 23 12 31 1输出:4代码:#include<iostream>#include<cmath>using namespace std;#define MAX 101int n, m, k, num, G[MAX][MAX], f[MAX][MAX];int dir[4][2] = {{1,
阅读全文
摘要:同pku1562 Oil Deposits 油田合并(简单深搜)输入:10 12W........WW..WWW.....WWW....WW...WW..........WW..........W....W......W...W.W.....WW.W.W.W.....W..W.W......W...W.......W.输出:3代码:#include<iostream>using namespace std;char map[101][101];int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}};
阅读全文
摘要:题意:N*M的图中有一些'@',从该位置往四周8个位置延伸,求共有多少块互不连通的‘@’构成的块?简单的dfs便能搞定。。。输入:1 1*3 5*@*@***@***@*@*1 8@@****@*5 5****@*@@*@*@**@@@@*@@@**@0 0输出:0122代码:#include<iostream>using namespace std;char map[101][101]; //定义地图 map[][],标记油田状况 int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1
阅读全文
摘要:二分搜索折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。时间复杂度:二分搜索每次把搜索区域减少一半,很明显时间复杂度为O(logN)。空间复杂度:O(1),虽以递归形式定义,但是尾递归,可改写为循环。二分搜索的基本实现二分查找法在算法家族大类中属于“分治法”,分治法基本都可以用递归来实现的
阅读全文