题解 | #坐标移动#

坐标移动

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

用栈的思想解,把每两个分号之间的子串压入栈中,然后判断和执行坐标移动操作
#include<stdio.h>
#include<string.h>

int main(void)
{
    char str[10000]={0};
    scanf("%[^\n]",&str);
    int x=0;
    int y=0;
    char order_stack[100]={0};
    int o_size=0;
    //判断每步操作是否有效
    int len=strlen(str);
    int flag=0;
    int temp=0;
    for(int i=0;i<len;i++)
    {
        if((str[i]>='0'&&str[i]<='9')||(str[i]>='A'&&str[i]<='Z'))
        {
            order_stack[o_size++]=str[i];
        }
        if(str[i]==';')
        {
            if(order_stack[0]=='W'||order_stack[0]=='A'||order_stack[0]=='S'||order_stack[0]=='D')
            {
                for(int j=1;j<o_size;j++)
                {
                    if(!(order_stack[j] >= '0' && order_stack[j] <= '9'))
                    {
                        flag++;
                    }
                }
                if(flag==0)
                {
                    for(int k=1;k<o_size;k++)
                    {
                        temp=temp*10+(order_stack[k]-'0');
                    }
                    if (order_stack[0] == 'W') { y += temp; }
                    else if (order_stack[0] == 'S') { y -= temp; }
                    else if (order_stack[0] == 'A') { x -= temp; }
                    else if (order_stack[0] == 'D') { x += temp; }
                }
            }
            flag=0;
            temp=0;
            o_size=0;order_stack[0]='0';
        }
        
    }
    //for(int i=0;i<o_size;i++){printf("%c ",order_stack[i]);}
    //printf("%d",temp);
    printf("%d,%d",x,y);
    return 0;
}


全部评论

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务