#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函数读取字符串的长度和内容。然后,我们定义两个变量xy表示当前的坐标,初始值都为0。我们还定义了一个二维数组visited用于记录每个坐标是否被访问过,初始值都为0。

接下来,我们使用一个循环遍历每个方向指令。在每次迭代中,我们首先将当前坐标标记为已访问。然后,根据方向指令更新坐标的值。

在更新坐标后,我们检查是否当前坐标已被访问过。如果是,说明经过了相同的坐标,我们输出"YES"并结束程序。

如果循环执行完毕后都没有找到相同的坐标,我们输出"NO"表示没有经过相同的坐标。

最后,我们使用printf函数输出结果。


原文地址: https://www.cveoy.top/t/topic/Z24 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录