关闭

CodeForces 321 A - Ciel and Robot

标签: codeforces
746人阅读 评论(0) 收藏 举报
分类:

题目链接】:click here~~

题目大意】:一个robot 机器人 ,可以根据给定的指令行动,给你四种指令,robot初始位置是(0,0),指令一出,robot会重复行动,判断能否在无限行动的情况下经过点(n,m)。

解题思路】其实仔细模拟一下,可以发现是有周期的,判断即可,见代码吧~~

代码:

#include <iostream>
#include <algorithm>
#include <bits/stdc++.h>

using namespace std;

const int N=105;
int n,m,c,t,ans,res,tmp;
char str[N];
int X[N],Y[N];

int main()
{
    int x,y;
    while(~scanf("%d%d",&x,&y))
    {
        memset(X,0,sizeof(X));
        memset(Y,0,sizeof(Y));
        scanf("%s",str+1);
        int len=strlen(str+1);
        if(x==0&&y==0){
            puts("Yes");
            return 0;
        }
        else{
            bool flag=0;
            int j=0,xx=x;
            int yy=y;
            int uu=0,dd=0,ll=0,rr=0;
            for(int i=0; i<=len; ++i){
                switch (str[i]){
                case 'U':
                    X[i]=X[i-1],Y[i]=Y[i-1]+1;///y[0]=1;
                    break;
                case 'D':
                    X[i]=X[i-1],Y[i]=Y[i-1]-1;
                    break;
                case 'L':
                    X[i]=X[i-1]-1,Y[i]=Y[i-1];
                    break;
                case 'R':
                    X[i]=X[i-1]+1,Y[i]=Y[i-1];///X[0]=1,
                    break;
                }

                /*  if(str[i]=='U')
                  {
                      X[i]=X[i-1],Y[i]=Y[i-1]+1;   ///  uu++;///yy+=1
                  }
                  else if(str[i]=='D')
                  {
                      X[i]=X[i-1],Y[i]=Y[i-1]-1;    /// dd++;///yy-=1
                  }
                  else if(str[i]=='L')
                  {
                      X[i]=X[i-1]-1,Y[i]=Y[i-1];    ///  ll++;///xx-=1
                  }
                  else
                  {
                      X[i]=X[i-1]+1,Y[i]=Y[i-1];    ///xx+=1
                  }
                  */
            }
            int zq;
            for(int i=0; i<=len; ++i){//2 2
                int za=xx-X[i];///2-X[0]=1,
                int zb=yy-Y[i];///2-Y[0]=1,
                zq=(X[len]!=0?za/X[len]:(Y[len]!=0?zb/Y[len]:1));
                if(X[len]*zq==za&&Y[len]*zq==zb&&zq>=0)
                ///if(zq>=0){
                    puts("Yes");
                    return 0;
                }
            }
            puts("No");
        }
    }
    return 0;
}
/*
2 2
RU
1 2
RU
-1 1000000000
LRRLU
0 0
D

Yes
No
Yes
Yes
*/


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:477879次
    • 积分:10907
    • 等级:
    • 排名:第1546名
    • 原创:534篇
    • 转载:25篇
    • 译文:75篇
    • 评论:90条
    自我简介
    nyist计科13级本科,bjtu17级在读硕士,喜爱算法,热爱编程,欢迎一起学习交流。
    博客专栏