本文主要是介绍CodeForces 321 A - Ciel and Robot,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【题目链接】: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 2int 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
DYes
No
Yes
Yes
*/
这篇关于CodeForces 321 A - Ciel and Robot的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!