题解 | C++ #坐标移动#(简单逻辑,又臭又长。)

坐标移动

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

#include <bits/stdc++.h>
using namespace std;

void calculate(vector<long>& result, string& s, int start, int end){
    if((end - start) == 2){        
        if(s[start+1] >= '0' && s[start+1] <= '9'){
            if(s[start+2] >= '0' && s[start+2] <= '9'){
                if(s[start] == 'A'){
                    result[0] -= ((s[start+1] - '0')*10 + (s[start+2] - '0')); 
                }else if(s[start] == 'S'){
                    result[1] -= ((s[start+1] - '0')*10 + (s[start+2] - '0'));
                }else if(s[start] == 'W'){
                    result[1] += ((s[start+1] - '0')*10 + (s[start+2] - '0'));
                }else if(s[start] == 'D'){
                    result[0] += ((s[start+1] - '0')*10 + (s[start+2] - '0'));
                }        
            }
        }       
    }else if((end - start) == 1){
        if(s[start+1] >= '0' && s[start+1] <= '9'){
            if(s[start] == 'A'){
                result[0] -= (s[start+1] - '0'); 
            }else if(s[start] == 'S'){
                result[1] -= (s[start+1] - '0');
            }else if(s[start] == 'W'){
                result[1] += (s[start+1] - '0');
            }else if(s[start] == 'D'){
                result[0] += (s[start+1] - '0');
            }        
            
        }
    }
}

int main() {
    vector<long> result;
    result.push_back(0);
    result.push_back(0);
    string s;
    cin >> s;
    int start = 0;
    int i = 0;
    for(; i <= s.size(); ++i){
        if(s[i] == ';' ){
            calculate(result, s, start, i-1);
            start = i + 1;
        }

    }
    cout << result[0] << ','<< result[1];

}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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