题解 | #坐标移动#

坐标移动

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

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

using namespace std;

int main() {
    string InputCordinate;

    getline(cin,InputCordinate);
    stringstream ss(InputCordinate);
    vector<string> CordinateVec;
    string Cordinate;
    while(getline(ss,Cordinate,';'))
    {
        if(Cordinate.length() >3 || Cordinate.length() < 2)
        {
            continue;
        }
        if(Cordinate[0] =='A' || Cordinate[0]=='D' || Cordinate[0] == 'W' || Cordinate[0] == 'S')
        {
            int size = Cordinate.size();
            if(size==2)
            {
                if(Cordinate[1]-'0'>=0 && Cordinate[1]-'0'<=9)
                {
                    CordinateVec.push_back(Cordinate);
                }
            }
            if(size==3)
            {
                if(Cordinate[1]-'0'>=0 && Cordinate[1]-'0'<=9)
                {
                    if(Cordinate[2]-'0'>=0 && Cordinate[2]-'0'<=9)
                    CordinateVec.push_back(Cordinate);
                }
            }

        }
    }
    
    int A[2] = {-1,0};
    int D[2] = {1,0};
    int W[2] = {0,1};
    int S[2] = {0, -1};
    int result[2] = {0,0};

    for(int i=0; i < CordinateVec.size(); ++i)
    {
        int temp = 0;
        if(CordinateVec[i].length() ==3){
                temp = (CordinateVec[i][1]-'0')*10+CordinateVec[i][2]-'0';
            }
            if(CordinateVec[i].length() ==2){
                temp = CordinateVec[i][1]-'0';
            }

       if(CordinateVec[i][0] == 'A')
       {   
            result[0] += A[0]*temp;
            result[1] += A[1]*temp;
       }
       else if(CordinateVec[i][0] == 'D')
       {
            result[0] += D[0]*temp;
            result[1] += D[1]*temp;
       }
       else if(CordinateVec[i][0] == 'W')
       {
            result[0] += W[0]*temp;
            result[1] += W[1]*temp;
       }
        else if(CordinateVec[i][0] == 'S')
       {
            result[0] += S[0]*temp;
            result[1] += S[1]*temp;
       }
    }
    cout<<result[0]<<","<<result[1]<<endl;
}

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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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