【数学】 最远距离求解
牛牛学走路
https://ac.nowcoder.com/acm/contest/23106/L
过程最远距离
题目
重述
略
求解
作为一道简单题,我之所以要拿出来遛一遛,是因为我的脑回路有的时候确实异于常人。
1. 过程中最远距离求解
我将本题分解成了求最远的x以及最远的y,然后进行求距
但事实上,应该是对每一次的x,y求距,然后选最大
关于这个问题,我认为是由于我的脑内建模出了一点问题。但是这个问题经常地出现,也不知道怎么解决....我想我有需要开始练冥想了...以及记录下来提醒自己
2. 循环次数
本题中的第二个次数是可以不考虑的
但是我在写代码的时候居然还是做了一个循环....
c语言还通过了(c语言的没改,还是多了好几次没用的循环)...但是python没通过,才被我发现我居然写了那么多冗余
这个问题的话....我觉得就是写循环的时候不能太不过脑子....越是面对简单题大脑越容易放松,掉以轻心
代码
c语言
#define mod 998244353
using namespace std;
typedef long long ll;
int main(void){
ll n;
cin >> n;
while(n--){
ll m;
cin >> m;
ll h = 0, w = 0;
double dist = 0, mdist = 0;
char tmp;
for(int i=0; i<m; i++){
cin >> tmp;
switch(tmp){
case 'L':{
w -= 1;
break;
}
case 'R':{
w += 1;
break;
}
case 'U':{
h += 1;
break;
}
case 'D':{
h -= 1;
break;
}
}
dist = sqrt(h*h + w*w);
if(dist > mdist){
mdist = dist;
}
}
cout << setprecision(12) << mdist << endl;
}
}
python
n = int(input())
for i in range(0, n):
m = int(input())
idr = input()
d = 0
md = 0
x = 0
y = 0
for k in idr:
if k == 'L':
x = x - 1
elif k == 'R':
x = x + 1
elif k == 'U':
y = y + 1
else :
y = y - 1
d = math.sqrt(y*y + x*x)
if d > md:
md = d
print(md)