题解 | 坐标移动

坐标移动

https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

#include <iostream>
using namespace std;

void gogogo(string red, int &a, int &b){
    int n = red.size(), step = 0;
    if(n <= 1 || n > 3) return;
    if(n == 2 && (red[1] >= '0' && red[1] <= '9')){
         step = red[1] - '0';
    }else if( n == 3 && (red[1] >= '0' && red[1] <= '9') && (red[2] >= '0' && red[2] <= '9')){
        step = (red[1] - '0') * 10 + red[2] - '0';
    }else{
        return;
    }
    switch (red[0]) {
    case 'W': b = b + step; break;
    case 'A': a = a - step; break;
    case 'S': b = b - step; break;
    case 'D': a = a + step; break;
    default: break;
    }
}
void yidong(string s, int &a, int &b){
    int i = 0, p = 0;
    while(i < s.size()) {
    while(s[i] != ';')i++;
    string red = s.substr(p , i - p);
    gogogo(red, a, b);
    i++;
    p = i;
    }
}

int main() {
    int a = 0, b = 0;
    string s;
    while (cin >> s) { // 注意 while 处理多个 case
        yidong(s, a, b);
        cout << a << "," << b << endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:04
点赞 评论 收藏
分享
钱嘛数字而已:辅导员肯定不能同意,不然你出事了,他要承担责任。但是,脚和脑子都长在你自己身上,使用它还需要向辅导员报告么? 辅导员必须按流程拒绝你,然后你拿出成年人的态度,做自己的选择。
点赞 评论 收藏
分享
King987:待优化的地方还是挺多的,可以参考一下我的作品优化一下,优化不好的话也可以找我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务