P酱的冒险旅途
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
P酱是个可爱的男孩子,有一天他在野外冒险,不知不觉中走入了一块神奇的地方。他在 0 0时刻进入这个地方,每一时刻他都只能向某一特定的方向移动长度为1的距离,当然他也可以选择不移动。移动需要花费 1 1的时间。
各个时刻他允许移动的方向由一个字符串给出,字符串只包含U
、D
、L
、R
四种字符,其中U
表示向上(
y
y轴正方向)移动,D
表示向下(
y
y轴负方向)移动,L
表示向左(
x
x轴负方向)移动,R
表示向右(
x
x轴正方向)移动。
字符串的第 x x个字符代表了第 x x时刻P酱可以移动的方向,字符串的长度只有 t t,也就是说,超过 t t时刻,P酱就要被邪恶的魔王大爷抓走了~
现在P酱在坐标原点,即 (0,0) (0,0)点,而出口在 (x,y) (x,y)点,P酱希望在规定的时间 t t内尽快走到出口。帮助P酱在最短的时间内离开这里吧~
Input
第一行包含一个正数 T T ( T≤100 T≤100),表示数据组数。
接下来每组数据包含两行,第一行包含三个整数
x,y,t
x,y,t (
−105≤x,y≤105,0<t≤105
−105≤x,y≤105,0<t≤105);第二行包含一个长度为
t
t的字符串,第
i
i个字符表示在
i
i时刻他能移动的方向,字符串只包含U
,D
,L
,R
四种字母。
Output
对于每组数据输出一行,表示P酱到达出口的最早时刻。如果他无法在
t
t时刻内到达出口,输出-1
。
Sample input and output
Sample Input | Sample Output |
---|---|
2 1 -1 5 LDRDR -2 1 8 RRUDDLRU | 3 -1 |
#include<cstdio>
#include<cstring>
int main()
{
int T,x,y,t,i,len;
char str[100005];
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&x,&y,&t);
scanf("%s",str);
len=strlen(str);
for(i=0;i<len;i++)
{
if(x==0&&y==0)
break;
if(str[i]=='U'&&y>0)
y--;
if(str[i]=='D'&&y<0)
y++;
if(str[i]=='L'&&x<0)
x++;
if(str[i]=='R'&&x>0)
x--;
}
if(i<len)
printf("%d\n",i);
else
printf("-1\n");
}
return 0;
}