凯叔讲故事网站谁做的,网站建设 python,小程序设计案例,重庆必去的10个景点目录
一、题目介绍
1.1 题目描述
1.2 备注#xff1a;
1.3 输入描述
1.4 输出描述
1.5 用例
二、Java代码实现
2.1 实现思路
2.2 详细代码
2.3 代码讲解#xff1a;
三、C语言实现
3.1实现步骤
3.2 实现代码
3.3 代码详解
四、Python实现
4.1 实现步骤
4.2 …
目录
一、题目介绍
1.1 题目描述
1.2 备注
1.3 输入描述
1.4 输出描述
1.5 用例
二、Java代码实现
2.1 实现思路
2.2 详细代码
2.3 代码讲解
三、C语言实现
3.1实现步骤
3.2 实现代码
3.3 代码详解
四、Python实现
4.1 实现步骤
4.2 代码实现
4.3 详细讲解
五、JS实现
5.1 实现步骤
5.2 详细代码
5.3详细讲解
六、总结 一、题目介绍
1.1 题目描述 某探险队负责对地下洞穴进行探险。探险队成员在进行探险任务时随身携带的记录器会不定期地记录自身的坐标但在记录的间隙中也会记录其他数据。探索工作结束后探险队需要获取到某成员在探险过程中相对于探险队总部的最远的足迹位置。 仪器记录坐标时坐标的数据格式为(x,y)如(1,2)、(100,200)其中0x10000y1000。同时存在非法坐标如(01,1)、(1,01)(0,100)属于非法坐标。设定探险队总部的坐标为(0,0)某位置相对总部的距离为x*xy*y。若两个座标的相对总部的距离相同则第一次到达的坐标为最远的足迹。若记录仪中的坐标都不合法输出总部坐标0,0。 1.2 备注 不需要考虑双层括号嵌套的情况比如sfsdfsd((1,2))。 1.3 输入描述 字符串表示记录仪中的数据。 如ferga13fdsf3(100,200)f2r3rfasf(300,400) 1.4 输出描述 字符串表示最远足迹到达的坐标。 如 (300,400) 1.5 用例
输入ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)输出(5,10)说明记录仪中的合法坐标有3个 (3,10) (3,4) (5,10)其中(5,10)是相距总部最远的坐标 输出(5,10)。
输入asfefaweawfaw(0,1)fe输出(0,0)说明记录仪中的坐标都不合法输出总部坐标0,0。
二、Java代码实现 实现这个题目需要解析字符串中的有效坐标计算它们到总部 (0,0) 的距离并找出最远的一个坐标。如果记录中的所有坐标都不合法我们将返回总部坐标 (0,0)。 2.1 实现思路
实现步骤如下 解析字符串提取出所有合法的坐标。验证坐标合法性确保坐标满足格式要求且 x 和 y 在 (0,1000) 之间。计算距离计算每个合法坐标到总部 (0,0) 的距离。找出最远的坐标在所有合法坐标中找出距离最大的那个。处理异常情况如果没有合法坐标返回总部坐标 (0,0)。 2.2 详细代码
下面是具体实现代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class CaveExploration {public static void main(String[] args) {String input ferga13fdsf3(100,200)f2r3rfasf(300,400);System.out.println(findFarthestCoordinate(input));}public static String findFarthestCoordinate(String input) {// 定义正则表达式以提取合法的坐标Pattern pattern Pattern.compile(\\((\\d{1,3}),(\\d{1,3})\\));Matcher matcher pattern.matcher(input);String farthestCoordinate (0,0);int maxDistance 0;while (matcher.find()) {String xStr matcher.group(1);String yStr matcher.group(2);int x Integer.parseInt(xStr);int y Integer.parseInt(yStr);// 检查坐标是否合法if (isValidCoordinate(xStr, yStr, x, y)) {int distance x * x y * y;if (distance maxDistance) {maxDistance distance;farthestCoordinate ( x , y );}}}return farthestCoordinate;}// 验证坐标是否合法private static boolean isValidCoordinate(String xStr, String yStr, int x, int y) {return x 0 x 1000 y 0 y 1000 !xStr.startsWith(0) !yStr.startsWith(0);}
}2.3 代码讲解
1. 字符串解析
在Java中我们使用正则表达式提取字符串中的坐标。
Pattern pattern Pattern.compile(\\((\\d{1,3}),(\\d{1,3})\\));
Matcher matcher pattern.matcher(input);解析思路
使用正则表达式 \\((\\d{1,3}),(\\d{1,3})\\) 匹配形如 (x,y) 的坐标其中 x 和 y 是 1 到 3 位的数字。matcher.find() 用于在输入字符串中查找所有符合正则表达式的子字符串。
2. 合法性验证
通过解析得到的字符串进一步验证它们是否合法。
private static boolean isValidCoordinate(String xStr, String yStr, int x, int y) {return x 0 x 1000 y 0 y 1000 !xStr.startsWith(0) !yStr.startsWith(0);
}验证思路
坐标 x 和 y 必须在 (0,1000) 范围内。坐标字符串不能以 0 开头除非它是单个 0。
3. 距离计算
计算每个合法坐标到总部 (0,0) 的距离。
通过这种方式可以确保找出距离总部最远的合法坐标并处理非法坐标和无坐标的情况。
三、C语言实现 使用C语言实现这个题目我们需要解析字符串中的有效坐标计算它们到总部 (0,0) 的距离并找出最远的一个坐标。如果记录中的所有坐标都不合法我们将返回总部坐标 (0,0)。 3.1实现步骤
解析字符串提取出所有合法的坐标。验证坐标合法性确保坐标满足格式要求且 x 和 y 在 (0,1000) 之间。计算距离计算每个合法坐标到总部 (0,0) 的距离。找出最远的坐标在所有合法坐标中找出距离最大的那个。处理异常情况如果没有合法坐标返回总部坐标 (0,0)。
3.2 实现代码
#include stdio.h
#include string.h
#include stdlib.h
#include math.h// 判断是否是合法的坐标
int isValidCoordinate(char *xStr, char *yStr, int x, int y) {return x 0 x 1000 y 0 y 1000 (xStr[0] ! 0 || strlen(xStr) 1) (yStr[0] ! 0 || strlen(yStr) 1);
}int main() {char input[] ferga13fdsf3(100,200)f2r3rfasf(300,400);char *ptr input;char xStr[4], yStr[4];int maxDistance 0;char farthestCoordinate[10] (0,0);while ((ptr strstr(ptr, ()) ! NULL) {if (sscanf(ptr, (%3[0-9],%3[0-9]), xStr, yStr) 2) {int x atoi(xStr);int y atoi(yStr);if (isValidCoordinate(xStr, yStr, x, y)) {int distance x * x y * y;if (distance maxDistance) {maxDistance distance;sprintf(farthestCoordinate, (%d,%d), x, y);}}}ptr;}printf(%s\n, farthestCoordinate);return 0;
}3.3 代码详解
1. 字符串解析
在C语言中我们使用 strstr 和 sscanf 来解析字符串。
while ((ptr strstr(ptr, ()) ! NULL) {if (sscanf(ptr, (%3[0-9],%3[0-9]), xStr, yStr) 2) {...}ptr;
}2.解析思路
使用 strstr 查找字符串中第一个 ( 的位置。使用 sscanf 提取括号中的数字对格式为 (%3[0-9],%3[0-9])确保读取的数字不超过3位。
2. 合法性验证
通过解析得到的字符串进一步验证它们是否合法。
int isValidCoordinate(char *xStr, char *yStr, int x, int y) {return x 0 x 1000 y 0 y 1000 (xStr[0] ! 0 || strlen(xStr) 1) (yStr[0] ! 0 || strlen(yStr) 1);
}验证思路
坐标 x 和 y 必须在 (0,1000) 范围内。坐标字符串不能以 0 开头除非它是单个 0。
3. 距离计算
计算每个合法坐标到总部 (0,0) 的距离。
int distance x * x y * y;计算思路
使用欧几里得距离的平方来比较不同坐标的远近公式为 distance x * x y * y。
4. 找出最远的坐标
在所有合法坐标中找出距离最大的那个。
if (distance maxDistance) {maxDistance distance;sprintf(farthestCoordinate, (%d,%d), x, y);
}思路
使用变量 maxDistance 记录最大距离每次计算新的距离后与之比较更新最大距离和最远坐标。
四、Python实现 使用Python实现这个题目同样需要解析字符串中的有效坐标计算它们到总部 (0,0) 的距离并找出最远的一个坐标。如果记录中的所有坐标都不合法我们将返回总部坐标 (0,0)。 4.1 实现步骤 解析字符串提取出所有合法的坐标。验证坐标合法性确保坐标满足格式要求且 x 和 y 在 (0,1000) 之间。计算距离计算每个合法坐标到总部 (0,0) 的距离。找出最远的坐标在所有合法坐标中找出距离最大的那个。处理异常情况如果没有合法坐标返回总部坐标 (0,0)。 4.2 代码实现
import redef find_farthest_coordinate(data):# 定义正则表达式以提取合法的坐标pattern re.compile(r\((\d{1,3}),(\d{1,3})\))matches pattern.findall(data)max_distance 0farthest_coordinate (0,0)for match in matches:x_str, y_str matchx int(x_str)y int(y_str)# 检查坐标是否合法if is_valid_coordinate(x_str, y_str, x, y):distance x * x y * yif distance max_distance:max_distance distancefarthest_coordinate f({x},{y})return farthest_coordinatedef is_valid_coordinate(x_str, y_str, x, y):# 验证坐标是否合法return 0 x 1000 and 0 y 1000 and \not (x_str.startswith(0) and len(x_str) 1) and \not (y_str.startswith(0) and len(y_str) 1)# 示例输入
input_data ferga13fdsf3(100,200)f2r3rfasf(300,400)
print(find_farthest_coordinate(input_data)) # 输出: (300,400)4.3 详细讲解
1. 字符串解析
在Python中我们使用正则表达式提取字符串中的坐标。
pattern re.compile(r\((\d{1,3}),(\d{1,3})\))
matches pattern.findall(data)解析思路
使用正则表达式 \((\d{1,3}),(\d{1,3})\) 匹配形如 (x,y) 的坐标其中 x 和 y 是 1 到 3 位的数字。findall 方法返回所有匹配的坐标对。
2. 合法性验证
通过解析得到的字符串进一步验证它们是否合法。
def is_valid_coordinate(x_str, y_str, x, y):return 0 x 1000 and 0 y 1000 and \not (x_str.startswith(0) and len(x_str) 1) and \not (y_str.startswith(0) and len(y_str) 1)验证思路
坐标 x 和 y 必须在 (0,1000) 范围内。坐标字符串不能以 0 开头除非它是单个 0。
3. 距离计算
计算每个合法坐标到总部 (0,0) 的距离。
distance x * x y * y计算思路
使用欧几里得距离的平方来比较不同坐标的远近公式为 distance x * x y * y。
4. 找出最远的坐标
在所有合法坐标中找出距离最大的那个。
if distance max_distance:max_distance distancefarthest_coordinate f({x},{y})思路
使用变量 max_distance 记录最大距离每次计算新的距离后与之比较更新最大距离和最远坐标。
5. 处理异常情况
如果没有合法坐标最远的坐标默认为 (0,0)。
max_distance 0
farthest_coordinate (0,0)思路
初始时将最远坐标设为 (0,0)如果找到合法坐标更新为最远坐标。
通过上述步骤可以在Python中实现解析字符串并找出距离总部最远的合法坐标并处理非法坐标和无坐标的情况。
五、JS实现 使用JavaScript实现这个题目同样需要解析字符串中的有效坐标计算它们到总部 (0,0) 的距离并找出最远的一个坐标。如果记录中的所有坐标都不合法我们将返回总部坐标 (0,0)。 5.1 实现步骤 解析字符串提取出所有合法的坐标。验证坐标合法性确保坐标满足格式要求且 x 和 y 在 (0,1000) 之间。计算距离计算每个合法坐标到总部 (0,0) 的距离。找出最远的坐标在所有合法坐标中找出距离最大的那个。处理异常情况如果没有合法坐标返回总部坐标 (0,0)。 5.2 详细代码
function findFarthestCoordinate(data) {// 定义正则表达式以提取合法的坐标const pattern /\((\d{1,3}),(\d{1,3})\)/g;let matches;let maxDistance 0;let farthestCoordinate (0,0);while ((matches pattern.exec(data)) ! null) {const xStr matches[1];const yStr matches[2];const x parseInt(xStr, 10);const y parseInt(yStr, 10);// 检查坐标是否合法if (isValidCoordinate(xStr, yStr, x, y)) {const distance x * x y * y;if (distance maxDistance) {maxDistance distance;farthestCoordinate (${x},${y});}}}return farthestCoordinate;
}// 验证坐标是否合法
function isValidCoordinate(xStr, yStr, x, y) {return x 0 x 1000 y 0 y 1000 !(xStr.startsWith(0) xStr.length 1) !(yStr.startsWith(0) yStr.length 1);
}// 示例输入
const inputData ferga13fdsf3(100,200)f2r3rfasf(300,400);
console.log(findFarthestCoordinate(inputData)); // 输出: (300,400)5.3详细讲解
1. 字符串解析
在JavaScript中我们使用正则表达式提取字符串中的坐标。
const pattern /\((\d{1,3}),(\d{1,3})\)/g;
let matches;解析思路
使用正则表达式 \((\d{1,3}),(\d{1,3})\) 匹配形如 (x,y) 的坐标其中 x 和 y 是 1 到 3 位的数字。pattern.exec(data) 用于在输入字符串中查找所有符合正则表达式的子字符串。
2. 合法性验证
通过解析得到的字符串进一步验证它们是否合法。
function isValidCoordinate(xStr, yStr, x, y) {return x 0 x 1000 y 0 y 1000 !(xStr.startsWith(0) xStr.length 1) !(yStr.startsWith(0) yStr.length 1);
}验证思路
坐标 x 和 y 必须在 (0,1000) 范围内。坐标字符串不能以 0 开头除非它是单个 0。
3. 距离计算
计算每个合法坐标到总部 (0,0) 的距离。
const distance x * x y * y;计算思路
使用欧几里得距离的平方来比较不同坐标的远近公式为 distance x * x y * y。
4. 找出最远的坐标
在所有合法坐标中找出距离最大的那个。
if (distance maxDistance) {maxDistance distance;farthestCoordinate (${x},${y});
}思路
使用变量 maxDistance 记录最大距离每次计算新的距离后与之比较更新最大距离和最远坐标。
5. 处理异常情况
如果没有合法坐标最远的坐标默认为 (0,0)。
let maxDistance 0;
let farthestCoordinate (0,0);思路
初始时将最远坐标设为 (0,0)如果找到合法坐标更新为最远坐标。
通过上述步骤我们可以在JavaScript中实现解析字符串并找出距离总部最远的合法坐标并处理非法坐标和无坐标的情况。
六、总结 在上述问题中我们通过解析记录字符串找到距离总部 (0,0) 最远的合法坐标。我们分别使用了Java、C、Python和JavaScript四种语言实现了解决方案。 下期见啦~