题面链接
https://ac.nowcoder.com/acm/contest/23106/L
思路
四个字母分别表示的四个方向,我们只需要按照需求模拟这个字符串即可,然后在每一步过程中更新一下最远的距离即可,最后输出
代码
#include<bits/stdc++.h>
using namespace std;
//----------------�Զ��岿��----------------
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
int dx[4]={0,-1,0,1},dy[4]={-1,0,1,0};
ll ksm(ll a,ll b) {
ll ans = 1;
for(;b;b>>=1LL) {
if(b & 1) ans = ans * a % mod;
a = a * a % mod;
}
return ans;
}
ll lowbit(ll x){return -x & x;}
const int N = 2e6+10;
//----------------�Զ��岿��----------------
int n,m,q,a[N];
int x,y;
int main()
{
// std::ios::sync_with_stdio(false);
// std::cin.tie(nullptr);
// std::cout.tie(nullptr);
string s;
int t;
cin>>t;
while(t--){
int len;
cin>>len>>s;
x = y = 0;
double ans = 0;
for(int i = 0;i < len; ++i) {
if(s[i] == 'U'){
y++;
}
else if(s[i] == 'D'){
y--;
}
else if(s[i] == 'L'){
x--;
}
else if(s[i] == 'R'){
x++;
}
ans = max(ans,sqrt(x * x * 1.0 + y * y * 1.0));
}
printf("%lf\n",ans);
}
return 0;
}