游客 Signup | Login
中文 | En

2010 - 熟悉地形

刚入学的时候总喜欢瞎逛以熟悉地形,当然也适用于网游-_-

话说有个人在10^9*10^9的地方乱走,当然他希望不重复经过相同的位置,给出他的初始位置和走m步的指令,问是否有存在某个位置被他走过两次(在初始位置但还没执行指令也认为初始位置被走过,且一步为一个单位长度)

Input

第一行输入两个整数,-10^9<=x,y<=10^9,表示初始位置,第二行输入一个数m,表示m步指令,m<=50。第三行输入一串指令(m个),指令只有4种:UDLR,U表示向上走,D表示向下走,L表示向左走,R表示向右走。

Output

每个测试数据一行,如果存在重复走过的格子输出Yes,否则输出No。

Examples

Input

1 1
4
ULDR
1 1
3
UUU

Output

Yes
No

Solution C++

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#define INF 1000000000
using namespace std;
char a[50];
bool b[150][150];
int main()
{
   int x,y;
   while(scanf("%d%d",&x,&y)!=EOF)
   {  memset(b,0,sizeof(b));
       x=75;y=75;
       b[x][y]=1;
       int m;
       scanf("%d",&m);
       scanf("%s",a);
       int flag=0;
       for(int i=0;i<m;i++)
       {
           if(a[i]=='U')
           {  x--;
               if(b[x][y]==0)
                b[x][y]=1;
               else
               {
                   flag=1;
                   break;
               }
           }
           else if(a[i]=='D')
           {  x++;
               if(b[x][y]==0)
                b[x][y]=1;
               else
               {
                   flag=1;
                   break;
               }
           }
           else if(a[i]=='L')
           { y--;
               if(b[x][y]==0)
                b[x][y]=1;
               else
               {
                   flag=1;
                   break;
               }
           }
           else if(a[i]=='R')
           { y++;
               if(b[x][y]==0)
                b[x][y]=1;
               else
               {
                   flag=1;
                   break;
               }
           }

       }
       if(flag==1) printf("Yes\n");
       else printf("No\n");
   }
}

Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题