深度优先搜索例题(C语言)

这篇是对上一篇的炸弹人用了另一种解法
题目:
在这里插入图片描述
代码:

#include <stdio.h>
//全局变量
char a[21][21];
int book[20][21]={0},max,mx,my,n,m;//book数组的值为1表示已走过,为0表示未走过,初始化都为0;

//该函数用来统计每个点位可消灭的敌人数
int getnum(int i,int j)
{
int x,y,sum=0;
x=i;y=j;
while(a[x][y]!=’#’)//判断该点是否为墙
{
if (a[x][y]==‘G’)//判断该点是否有敌人,若有则进行统计
{
sum++;
}
//向上统计
x–;
}

x=i;y=j;
while(a[x][y]!='#')//判断该点是否为墙
{
	if (a[x][y]=='G')//判断该点是否有敌人,若有则进行统计
	{
		sum++;
	}
	//向下统计
	x++
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个经典的深度优先搜索(DFS)例题是迷宫问题。 假设有一个迷宫,其中包含了一些墙壁和通道。你的任务是找到从起点到终点的路径。在迷宫中,你只能沿上、下、左、右四个方向移动,不能斜向移动,并且不能穿过墙壁。 DFS 是一种递归的搜索算法,在解决迷宫问题时非常有效。它的基本思想是从起点开始,依次尝试每个可能的移动方向,直到找到路径或者无法继续移动为止。如果遇到无法继续移动的情况,就会回溯到上一个位置,尝试其他方向。 下面是一个简单的示例代码,演示了如何使用深度优先搜索解决迷宫问题: ```python def dfs(maze, start, end): rows = len(maze) cols = len(maze[0]) # 创建一个与迷宫大小相同的二维数组来记录访问状态 visited = [[False] * cols for _ in range(rows)] # 定义上、下、左、右四个方向的移动向量 directions = [(0, 1), (0, -1), (1, 0), (-1, 0)] def can_move(row, col): # 判断当前位置是否可以移动 if row < 0 or row >= rows or col < 0 or col >= cols: return False if maze[row][col] == 1 or visited[row][col]: return False return True def dfs_helper(row, col): # 标记当前位置为已访问 visited[row][col] = True # 如果当前位置是终点,返回True表示找到了路径 if (row, col) == end: return True # 尝试四个移动方向 for direction in directions: new_row = row + direction[0] new_col = col + direction[1] if can_move(new_row, new_col): if dfs_helper(new_row, new_col): return True # 如果四个方向都无法找到路径,回溯到上一个位置 return False # 从起点开始进行深度优先搜索 return dfs_helper(start[0], start[1]) ``` 这只是一个简单的演示,实际应用中可能需要更复杂的逻辑来处理不同的情况。希望能帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值