题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
有点白痴的解法,虽然写的有点多,而且有些条件应该可以合并,但是思路很简单。改天再改进一下
#include <iostream> #include <string> #include <vector> #include <set> using namespace std; void process(char s, int &resultX, int &resultY, string step) { int num = stoi(step); if (s == 'A') { resultX -= num; } else if (s == 'S') { resultY -= num; } else if (s == 'W') { resultY += num; } else { // s = 'D' resultX += num; } } int main(){ string input; cin >> input; int resultX = 0; int resultY = 0; while (!input.empty()) { size_t delim = input.find_first_of(';'); string temp = input.substr(0,delim); if (temp.size() != 3 && temp.size() !=2) { input.erase(0,delim+1); continue; } else { string num; char s = temp[0]; if (s != 'A' && s != 'S' && s != 'W' && s != 'D') { input.erase(0,4); continue; } if (temp.size() == 2) { num = temp[1]; if (temp[1] >= '0' && temp[1] <= '9') { process(s,resultX, resultY, num); } else { input.erase(0,3); continue; } } else { num = temp[1]; num += temp[2]; if (temp[1] >= '0' && temp[1] <= '9' && temp[2] >= '0' && temp[2] <= '9') { process(s, resultX, resultY, num); } else { input.erase(0,4); continue; } } } input.erase(0,delim+1); } cout << resultX << "," << resultY << endl; return EXIT_SUCCESS; }