HJ17-坐标移动

本文介绍如何开发一个坐标计算工具,该工具接受A、D、W、S指令进行左右上下移动,并处理非法坐标输入。例如,排除连续字母、无效字符等。示例展示了从输入字符串计算坐标移动的过程。

1. 题目描述

开发一个坐标计算工具,A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0, 0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到文件里面。其中坐标里面有一些非法的,例如:AA10,A1A,YAD之类。

示例1:

输入:A10;S20;W10;D30;X;A1A;B10A11;;A10;

输出:10,-10

2. Solution

strs = input().split(';')

x, y = 0
### 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."的信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值