HAUT OJ2021新生周赛(赛后发现)

问题 E: 聚聚的小游戏  (个人在做完这道题后并没有想这么多,只是觉得是一道常规题,但试后发现这道题确实还是有值得探讨的地方的,注意看我下面的i的值)


问题描述:
聚聚写课程设计突发奇想做了一个益智(简单)小游戏。游戏中间有一部分是使用键盘W、A、S、D(分别代表上、左、下、右)来控制角色移动,现在游戏角色在原点,聚聚给你n个大写字母‘W’’A’’S’’D’,如果角色经过这n个操作后依然在原点请输出”YES”,否则输出”NO”(不带引号)。

输入:

第一行,一个正整数n,且n<=100

第二行,n个字符,每个字符是大写字母‘W’或’A’或’S’或’D’

输出:

一行,如果角色还在原点输出”YES”(不带引号),否则输出”NO”(不带引号)

样例输入:

8
WASDWASD
样例输出:

YES

#include 
int main()
{
    int n;
    scanf ("%d",&n);
    char m;
    int x=0,y=0;
    int i=0;//在这里我i的值为0,目的是使n后面的换行符不要影响我对步数的判断,赛后发现这也是一种吸收掉换行符的方法,并且个人认为比getchar要来的方便,当然吸收换行符也可以使用%*c或者getchar
//在编译器里使用调试功能会发现第一个mASCII码值为10也就是\n
    while(i<=n)
    {
        scanf ("%c",&m);
        if(m=='W')
        {
            x=x+1;
        }
        else if(m=='S')
        {
            x=x-1;
        }
        else if(m=='A')
        {
            y=y+1;
        }
        else if(m=='D')
        {
            y=y-1;
        }
        i++;
    }
    if(x==0&&y==0)
    {
        printf ("YES");
    }
    else
    {
        printf ("NO");
    }


    return 0;
}

在这里我i的值为0,目的是使n后面的换行符不要影响我对步数的判断,赛后发现这也是一种吸收掉换行符的方法,并且个人认为比getchar要来的方便,当然吸收换行符也可以使用%*c或者getchar

你可能感兴趣的