牛客网-坐标移动

2023-11-06

**题目描述
开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。
输入:
合法坐标为A(或者D或者W或者S) + 数字(两位以内)
坐标之间以;分隔。
非法坐标点需要进行丢弃。如AA10; A1A; % ; YAD; 等。
下面是一个简单的例子 如:
A10;S20;W10;D30;X;A1A;B10A11;;A10;
*处理过程:
起点(0,0)

  • A10 = (-10,0)
  • S20 = (-10,-20)
  • W10 = (-10,-10)
  • D30 = (20,-10)
  • x = 无效
  • A1A = 无效
  • B10A11 = 无效
  • 一个空 不影响
  • A10 = (10,-10)*
    结果 (10, -10)
    注意请处理多组输入输出
    输入描述:
    一行字符串
    输出描述:
    最终坐标,以,分隔

示例1
输入
A10;S20;W10;D30;X;A1A;B10A11;;A10;
输出
10,-10

#include<stdio.h>
int main(void)
    {
        int count = 0;
        char in[2000] = { '\0' };
        char temp[20] = { '\0' };
        while (scanf("%s", in) != EOF)
        {
            int i=0,x = 0, y = 0, j = 0;
            while (in[i] != '\0')
            {
                 
                if (in[i] != ';')
                {
                    temp[j++] = in[i++];
                    count++;
                }
                else
                {
                    j = 0;
                    i++;
                    if (count == 3)
                    {
                        if ((temp[j] == 'A' || temp[j] == 'D' || temp[j] == 'W' || temp[j] == 'S') &&temp[j + 1] >= '0'&&temp[j + 1] <= '9'&&temp[j + 2] >= '0'&&temp[j + 2] <= '9')
                        {
                            switch (temp[j])
                            {
                            case 'A':x -= (temp[j + 1]-'0') * 10 + (temp[j + 2]-'0'); break;
                            case 'D':x += (temp[j + 1] - '0') * 10 + (temp[j + 2] - '0'); break;
                            case 'W':y += (temp[j + 1] - '0') * 10 + (temp[j + 2] - '0'); break;
                            case 'S':y -= (temp[j + 1] - '0') * 10 + (temp[j + 2] - '0'); break;
                            default:break;
                            }
                        }
                        count = 0;
                    }
                    else if (count == 2)
                    {
                        if ((temp[j] == 'A' || temp[j] == 'D' || temp[j] == 'W' || temp[j] == 'S') && temp[j + 1] >= '0'&&temp[j + 1] <= '9')
                        {
                            switch (temp[j])
                            {
                            case 'A':x -= (temp[j + 1] - '0') ; break;
                            case 'D':x += (temp[j + 1] - '0') ; break;
                            case 'W':y += (temp[j + 1] - '0') ; break;
                            case 'S':y -= (temp[j + 1] - '0') ; break;
                            default:break;
                            }
                        }
                        count = 0;
                    }
                    else
                    {
                        count = 0;
                    }
                         
                }
            }
            printf("%d,%d\n", x, y);
        }
         
        return 0;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

牛客网-坐标移动 的相关文章

随机推荐

  • 【js】删除数组中的指定元素,且不改变原数组

    笨办法 export function remove arr item let result arr forEach function element if element item result push element return r
  • 样本不平衡问题分析与部分解决办法

    最近工作中在处理文本分类问题遇到了分类不均衡的问题 主要还是样本太少还同时非常的不均衡正负样本1 10 类别不平衡比例超过4 1 就会造成偏移 就使用了SMOTE方法 注意 在进行数据增广的时候一定要将测试集和验证集单独提前分开 扩张只在训
  • Doxygen简介及使用说明

    https blog csdn net Candy1232009 article details 80786179
  • java的String字符串拼接和StringBuffer的append的速度差异

    今天在leetcode上做题的时候发现 实现字符串拼接的时候 用StringBuffer的append比String的 快很多 思考了一下这两者的差别 我是初学者 有说错的还请大家指正 首先得出String的 拼接的时间 public st
  • Linux下多线程编程思考与学习----01(线程创建pthread_create函数详解)

    一 为什么需要使用多线程编程 当在执行某些程序的时候难免会需要同时执行两个 甚至多个任务 当然可以使用多个进程进行执行 但是难免需要用到信息的传输 因此就需要引入进程间通信的问题 这对于CPU内存调度的压力也会更大 多线程编程的优点是在同一
  • 数据结构题目-二叉排序树

    目录 问题 A 二叉排序树 文本输出 问题 B 销售排行榜 问题 C 二叉排序树 平衡因子 问题 D 案例 1 1 1 二分查找 问题 E 进阶实验 1 3 1 两个有序序列的中位数 问题 A 二叉排序树 文本输出 题目描述 给定一个序列
  • 登录页面渗透测试思路总结

    登录页面可能产生哪些漏洞呢 1 注入点及万能密码登录 2 登录时 不安全的用户提示 比如提示用户名不存在或者密码验证码错误 3 查看登录页面源代码 看是否存在敏感信息泄露 4 不安全的验证码 5 在注册账号的时候 是否存在不安全的提示 6
  • 【华为OD机试 2023 B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 唐僧团队要裁员,你会裁谁?

    提问 西游记取经团为了节约成本 唐太宗需要在这个团队里裁掉一名队员 该裁掉哪一位呢 为什么 为了完成西天取经任务 组成取经团队 成员有唐僧 孙悟空 猪八戒 沙和尚 白龙马 高层领导 观音 项目经理 唐僧 技术核心 孙悟空 普通团员 猪八戒
  • JAVA:计算1+2+3+…,加到多少时和超过10000?

    计算1 2 3 加到多少时和超过10000 int s 0 int i 1 for s lt 10000 i s i System out println i
  • 【数据库】当日期(时间)为条件,查询oracle数据库,以及出现ORA-01849:小时值必须介于1和12之间时的解决方法

    说明 数据库 Oracle 11g 可视化 Navicat Premiu 15 注意 在ORACLE中 时间格式默认时间为12小时制 所以如果出现 ORA 01849 小时值必须介于1和12之间 的提醒 需要把下面中的 yyyy MM dd
  • 实现一个高性能网络通讯库的要点

    实现一个高性能网络通讯库的要点 由于硬件的发展速度快 本来占时间消耗小头的软件层 变成了大头 原本占性能比例非常小的的中断 上下文切换 也成为了性能优化的方向 许多bypass kernel的方案开始发展起来 以前在千兆网卡普及的时代 就有
  • Java之增删改查

    增删改查 一 搭建底层代码 二 界面 一 搭建底层代码 首先导入我们需要的jar包依赖 导入我们需要的js 结构目录 各包展示 DBHelpoer java package com xlb util import java io Input
  • Spring Boot类型安全的配置属性

    23 7 类型安全的配置属性 使用 Value property 注解注入配置属性有时可能比较笨重 特别是需要使用多个properties或你的数据本身有层次结构 为了控制和校验你的应用配置 Spring Boot提供一个允许强类型bean
  • Where子句

    Where 子句 搜索 empno 等于 7900 的数据 Select from emp where empno 7900 Where 条件 筛选行 条件 列 比较运算符 值 比较运算符包涵 gt lt gt lt lt gt 表示 不等
  • 大厂领导为什么喜欢跨层与下属聊天

    作为一个在大厂里面浸淫十几年的loser 平时主要精力没用在技术提升上 对于大厂的人情世故各类八卦倒是研究的透彻 如果你细心观察 会发现一些大的公司里面 领导喜欢跨层与下属去沟通聊天 我待过几家比较大的公司 这个现象还是比较普遍 今天就摆一
  • 基于物联网的视觉暂留风扇设计

    论文下载 知网链接 版权所有 有相关问题或索要完整代码实现请联系作者gzn00417或邮箱gzn00417 foxmail com 基于物联网的视觉暂留风扇设计 郭茁宁1 林亦宁2 何胜阳2 哈尔滨工业大学计算机科学与技术学院 黑龙江 哈尔
  • I - LCM of GCDs(约数)

    I LCM of GCDshttps vjudge csgrandeur cn problem AtCoder arc124 c思路 枚举其a 1 和b 1 所有因数 就是将其归类到红蓝两个袋子里去 然后依次判断一对 a i b i 中是否
  • 关于响度、响度级、声强、声强级、声压、声压级、分贝、方、电平、增益、音高、音分

    在录音声学里 响度 响度级 声强 声强级 声压 声压级 分贝 方 电平 增益 音高 音分总是令人头疼的若干概念 这里简单的说一下他们的意义和区别 让我们把它们的顺序整理一下 分贝 分贝是声级测量中最常用的单位 被简写为dB 其中小写的d代表
  • 牛客网-坐标移动

    题目描述 开发一个坐标计算工具 A表示向左移动 D表示向右移动 W表示向上移动 S表示向下移动 从 0 0 点开始移动 从输入字符串里面读取一些坐标 并将最终输入结果输出到输出文件里面 输入 合法坐标为A 或者D或者W或者S 数字 两位以内