aumn 2022-04-20 23:00 采纳率: 100%
浏览 6
已结题

P酱的冒险旅途(Problem ID 758 字符串处理 )为什么wa了呢

问题遇到的现象和发生背景

P酱是个可爱的男孩子,有一天他在野外冒险,不知不觉中走入了一块神奇的地方。他在00时刻进入这个地方,每一时刻他都只能向某一特定的方向移动长度为1的距离,当然他也可以选择不移动。移动需要花费11的时间。

各个时刻他允许移动的方向由一个字符串给出,字符串只包含U、D、L、R四种字符,其中U表示向上(yy轴正方向)移动,D表示向下(yy轴负方向)移动,L表示向左(xx轴负方向)移动,R表示向右(xx轴正方向)移动。

字符串的第xx个字符代表了第xx时刻P酱可以移动的方向,字符串的长度只有tt,也就是说,超过tt时刻,P酱就要被邪恶的魔王大爷抓走了~

现在P酱在坐标原点,即(0,0)(0,0)点,而出口在(x,y)(x,y)点,P酱希望在规定的时间tt内尽快走到出口。帮助P酱在最短的时间内离开这里吧~

Standard Input
第一行包含一个正数 T (T\leq 100T≤100),表示数据组数。

接下来每组数据包含两行,第一行包含三个整数 x,y,tx,y,t (-10^5\leq x,y\leq 10^5, 0< t\leq 10^5−10
5
≤x,y≤10
5
,0<t≤10
5
);第二行包含一个长度为tt的字符串,第ii个字符表示在ii时刻他能移动的方向,字符串只包含U,D,L,R四种字母。

Standard Output
对于每组数据输出一行,表示P酱到达出口的最早时刻。如果他无法在tt时刻内到达出口,输出-1。

Samples
Input Output
2
1 -1 5
LDRDR
-2 1 8
RRUDDLRU
3
-1
Note
第一组样例:

P酱在00时刻位于原点(0, 0)(0,0),他只能向左移动,但他选择不走。
P酱在11时刻依然位于原点(0, 0)(0,0),他只能向下移动,于是他向下移动到了(0,-1)(0,−1)
P酱在22时刻位于(0,-1)(0,−1),他只能向右移动,于是他移动到了出口(1, -1)(1,−1),所以在33时刻,P酱离开了这片区域!

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int T;
    cin >> T;
    while (T--)
    {
        int x, y;
        int t;
        int flag=0;
        bool judge=0;
        int X=0, Y=0;
        cin >> x >> y >> t;
        char* m = (char*)malloc(t);
        for (int i = 0; i < t; i++)
        {
            cin >> m[i];
            switch (m[i])
            {
            case'U':
            {
                if (y > 0 && Y != y)
                {
                    Y++; 
                }flag++; break;
            }
            case'D':
            {
                if (y < 0 && Y != y)
                {
                    Y--; 
                }flag++; break;
            }
            case'L':
            {if (x < 0 && X != x)
            {
                X--; 
            }flag++;break;
            }
            case'R':
            {if (x > 0 && X != x)
            {
                X++; 
            } flag++;break;
            }
            default:break;
            }
            
            if (x == X && y == Y) {
                judge = 1;
                break; 
            }
        }
        if (judge==1)cout << flag << endl;
        else cout << -1;

    }
    return 0;
}


我想要达到的结果

样例是可以通过的,但是为什么在oj平台上就wa了呢

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 4月28日
    • 创建了问题 4月20日

    悬赏问题

    • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
    • ¥30 STM32 INMP441无法读取数据
    • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
    • ¥15 用visualstudio2022创建vue项目后无法启动
    • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
    • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
    • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
    • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
    • ¥30 c#打开word开启修订并实时显示批注
    • ¥15 如何解决ldsc的这条报错/index error