【数学】 最远距离求解

牛牛学走路

https://ac.nowcoder.com/acm/contest/23106/L

过程最远距离

题目

alt

重述

求解

作为一道简单题,我之所以要拿出来遛一遛,是因为我的脑回路有的时候确实异于常人。

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)


全部评论

相关推荐

服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
点赞 评论 收藏
分享
某牛奶:一觉醒来全球程序员能力下降200%,小伙成功scanf惊呆在座个人。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务