京东笔试 京东笔试题 0810

笔试时间:2024年08月10日

历史笔试传送门:2023秋招笔试合集

第一题

题目

牛牛昨晚喝醉了,走路开始疯狂摇摆,方向也分不清了。假设他所在的地方是一个二维平面,开始它位于坐标为(0,0)的地方,并且面朝北方即y轴正方向。W表示牛牛向前走,A表示牛牛把当前方向向左转90度,D表示牛牛把方向向右转90度,S表示牛牛呆在原地。给出一个字符串表示牛牛的酒后行为方式,你能告诉他走完后它位于哪个坐标点吗?

输入描述

输入仅有一行,一个字符串S(1≤|S1|≤10),并且仅有"W,S,A,D'这四种字符表示牛牛的行为方式。

输出描述

输出仅有一行,坐标位置x和用空格分开,表示牛牛的最终位置。

样例输入

WAW

样例输出

-1 1

说明

第一步后牛牛面朝上位于(0,1),第二步后牛牛面朝西位于(0,1),第三步后牛牛面朝西位于(-1,1);

参考题解

模拟。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>
#include <string>

using namespace std;

int main() {
    string S;
    cin >> S;

    int x = 0, y = 0;
    char direction = 'N';  

    for (char c : S) {
        if (c == 'W') {
            if (direction == 'N') y++;
            else if (direction == 'E') x++;
            else if (direction == 'S') y--;
            else if (direction == 'W') x--;
        } else if (c == 'A') {
            if (direction == 'N') direction = 'W';
            else if (direction == 'W') direction = 'S';
            else if (direction == 'S') direction = 'E';
            else if (direction == 'E') direction = 'N';
        } else if (c == 'D') {
            if (direction == 'N') direction = 'E';
            else if (direction == 'E') direction = 'S';
            else if (direction == 'S') direction = 'W';
            else if (direction == 'W') direction = 'N';
        }
        
    }

    cout << x << " " << y << endl;

    return 0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String S = scanner.nextLine();

        int x = 0, y = 0;
        char direction = 'N';  

        for (char c : S.toCharArray()) {
            if (c == 'W') {
                if (direction == 'N') y++;
                else if (direction == 'E') x++;
                else if (direction == 'S') y--;
                else if (direction == 'W') x--;
            } else if (c == 'A') {
                if (direction == 'N') direction = 'W';
                else if (direction == 'W') direction = 'S';
                else if (direction == 'S') direction = 'E';
                else if (direction == 'E') direction = 'N';
            } else if (c == 'D') {
                if (direction == 'N') direction = 'E';
                else if (direction == 'E') direction = 'S';
                else if (direction == 'S') direction = 'W';
                else if (direction == 'W') direction = 'N';
            }
        }

        System.out.println(x + " " + y);
        scanner.close();
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

S = input()

x, y = 0, 0
direction = 'N'

for c in S:
    if c == 'W':
        if direction == 'N':
            y += 1
        elif direction == 'E':
            x += 1
        elif direction == 'S':
            y -= 1
        elif direction == 'W':
            x -= 1
    elif c == 'A':
        if direction == 'N':
            direction = 'W'
        elif direction == 'W':
            direction = 'S'
        elif direction == 'S':
            direction = 'E'
        elif direction == 'E':
            direction = 'N'
    elif c == 'D':
        if direction == 'N':
            direction = 'E'
        elif direction == 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
评论
1
17
分享
牛客网
牛客企业服务