WA第二个点求助
查看原帖
WA第二个点求助
1009027
stils楼主2023/11/19 23:07
#include<bits/stdc++.h>
using namespace std;
struct C{
    int x,y;
};
map<char,C>m;//一个map存放字母和坐标
string s;
int sum;
int main(){
    m['A']={1,1},m['B']={2,1},m['C']={3,1},m['D']={4,1},m['E']={5,1},m['F']={6,1};
    m['G']={1,2},m['H']={2,2},m['I']={3,2},m['J']={4,2},m['K']={5,2},m['L']={6,2};
    m['M']={1,3},m['N']={2,3},m['O']={3,3},m['P']={4,3},m['Q']={5,3},m['R']={6,3};
    m['S']={1,4},m['T']={2,4},m['U']={3,4},m['V']={4,4},m['W']={5,4},m['X']={6,4};
    m['Y']={1,5},m['Z']={2,5},m['s']={3,5},m['h']={4,5},m['p']={5,5},m['e']={6,5};
    //每个字母的坐标
    getline(cin,s);
    sum+=(m[s[0]].x-m['A'].x)+(m[s[0]].y-m['A'].y);//从A运动到第一个
    for(int i=1;i<s.size();i++){
        if(s[i]==' ')s[i]='s';
        if(s[i]=='-')s[i]='h';
        if(s[i]=='.')s[i]='p';//特殊判断
        sum+=abs(m[s[i]].x-m[s[i-1]].x)+abs(m[s[i]].y-m[s[i-1]].y);
        //当前x坐标-上一个点的x坐标+当前y坐标-上一个点的y坐标=距离?
    }
    sum+=(m['e'].x-m[s[s.size()-1]].x)+(m['e'].y-m[s[s.size()-1]].y);//从最后一个运动到enter
    cout<<sum<<endl;
    return 0;
}
2023/11/19 23:07
加载中...