C语言判断Bob移动路径是否经过相同坐标
#include <stdio.h>
int main() {
int length;
char directions[1001];
// 读取字符串长度和字符串内容
scanf("%d", &length);
scanf("%s", directions);
int x = 0, y = 0; // 初始坐标为(0, 0)
int visited[2001][2001] = {0}; // 记录每个坐标是否被访问过
// 遍历每个方向指令
for (int i = 0; i < length; i++) {
visited[x + 1000][y + 1000] = 1; // 标记当前坐标为已访问
// 根据方向指令更新坐标
if (directions[i] == 'U') {
y += 1;
} else if (directions[i] == 'D') {
y -= 1;
} else if (directions[i] == 'R') {
x += 1;
} else if (directions[i] == 'L') {
x -= 1;
}
// 如果当前坐标已被访问过,则输出YES并结束程序
if (visited[x + 1000][y + 1000] == 1) {
printf("YES\n");
return 0;
}
}
// 所有指令执行完毕后,输出NO表示没有经过相同的坐标
printf("NO\n");
return 0;
}
以上是用C语言完成题目的代码。在代码中,我们首先定义了变量length表示字符串的长度,以及字符数组directions用于存储字符串内容。
在main函数中,我们使用scanf函数读取字符串的长度和内容。然后,我们定义两个变量x和y表示当前的坐标,初始值都为0。我们还定义了一个二维数组visited用于记录每个坐标是否被访问过,初始值都为0。
接下来,我们使用一个循环遍历每个方向指令。在每次迭代中,我们首先将当前坐标标记为已访问。然后,根据方向指令更新坐标的值。
在更新坐标后,我们检查是否当前坐标已被访问过。如果是,说明经过了相同的坐标,我们输出"YES"并结束程序。
如果循环执行完毕后都没有找到相同的坐标,我们输出"NO"表示没有经过相同的坐标。
最后,我们使用printf函数输出结果。
原文地址: https://www.cveoy.top/t/topic/Z24 著作权归作者所有。请勿转载和采集!