本文主要是介绍HUD 1241 搜索 三维深搜,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/*这个题目主要是找到某个油井'@',然后用DFS函数对其上下左右以及和其对角线上的点进行搜索,把其周围的油井标记为非油井'*' ,直到其周围所有的点都被访问了之后就返回到主函数中,表示一个油井泵。
*/
#include<iostream>
#include<string>
using namespace std;
char st[102][102];
int s[8][2] = {{1,0},{-1,0},{-1,1},{-1,-1},{1,1},{1,-1},{0,1},{0,-1}};//用来控制方向
int n, m;void dfs(int x, int y)//DFS深搜函数
{int sx, sy;for(int i = 0; i < 8; i++){sx = x + s[i][0];sy = y + s[i][1];if(st[sx][sy]=='@' && (sx>=1&&sx<=n&&sy>=1&&sy<=m))//要保证已知油井周围的点在范围内 {st[sx][sy] = '*';dfs(sx,sy);//函数递归 }}
}int main()
{while(cin >> n >> m && n||m){int sum = 0;for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++)cin >> st[i][j];for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++)if(st[i][j] == '@') {sum++;st[i][j] = '*';dfs(i,j);}cout << sum << endl;}return 0;
}
这篇关于HUD 1241 搜索 三维深搜的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!