HJ17 坐标移动

这篇博客探讨了如何从字符串中取出合法坐标并进行移动操作。重点讲解了如何从'A10'这样的字符串中提取第一个字符,并检查它是否在特定列表m中。内容涉及到字符串解析、条件判断等基础算法知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、取出合法坐标

2、按坐标移动

3、字符串'A10':取出字符串中第一个字符 i[0] 'A'

4、判断条件:i[0] in m (字符串中第一个字符是否在m列表中)

### HJ43 迷宫问题 C语言实现 对于迷宫问题,在C语言中的解决方法通常涉及深度优先搜索(DFS)或广度优先搜索(BFS),这两种算法都是遍历或搜索图形结构的有效方式。针对HJ43迷宫问题,可以采用BFS来寻找最短路径,因为该算法能够逐层向外扩展直到找到目标位置。 下面是一个基于BFS的简单实现: ```c #include <stdio.h> #include <stdbool.h> #define MAX_SIZE 100 // 定义最大矩阵尺寸[^1] typedef struct { int x, y; } Point; // 方向数组用于表示四个可能移动的方向(上、下、左、右) int dir_x[] = {-1, 1, 0, 0}; int dir_y[] = {0, 0, -1, 1}; bool isValid(int newX, int newY, int m, int n, char maze[MAX_SIZE][MAX_SIZE], bool visited[MAX_SIZE][MAX_SIZE]) { return (newX >= 0 && newX < m && newY >= 0 && newY < n && !visited[newX][newY] && maze[newX][newY] != '1'); } void bfs(char maze[MAX_SIZE][MAX_SIZE], int startRow, int startCol, int endRow, int endCol, int m, int n) { Point queue[MAX_SIZE * MAX_SIZE]; int front = 0, rear = 0; bool visited[MAX_SIZE][MAX_SIZE] = {{false}}; int prevX[MAX_SIZE][MAX_SIZE] = {{-1}}, prevY[MAX_SIZE][MAX_SIZE] = {{-1}}; queue[rear].x = startRow; queue[rear++].y = startCol; visited[startRow][startCol] = true; while(front < rear){ Point current = queue[front++]; if(current.x == endRow && current.y == endCol){ // 找到终点 printf("Path found!\n"); // 回溯打印路径 do{ printf("(%d,%d)\n", current.x, current.y); int tempX = prevX[current.x][current.y]; int tempY = prevY[current.x][current.y]; current.x = tempX; current.y = tempY; }while(prevX[current.x][current.y]!=-1); return ; } for(int i=0;i<4;++i){ int nextX=current.x+dir_x[i]; int nextY=current.y+dir_y[i]; if(isValid(nextX,nextY,m,n,maze,visited)){ queue[rear].x=nextX; queue[rear++].y=nextY; visited[nextX][nextY]=true; prevX[nextX][nextY]=current.x; prevY[nextX][nextY]=current.y; } } } printf("No path found.\n"); } ``` 此代码片段定义了一个`bfs()`函数用来执行广度优先搜索并尝试从起点到达指定的目标坐标。如果找到了一条通往目的地的道路,则会通过回溯先前记录的位置来显示这条路线;如果没有可行解则输出"No path found."的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值