【蓝桥杯02】:在数列a_ 1,a_2, n中,定义两个元素a_ i和a_ j的距离为|i+j|+la_ i-a_ j|,给定一个数列,请问找出元素之间最大的元素距离。

问题描述:

        在数列a_ 1,a_2, n中,定义两个元素a_ i和a_ j的距离为|i+j|+la_ i-a_ j|,给定一个数列,请问找出元素之间最大的元素距离。

输入格式

        输入的第一行包含一个整数 n。
        第二行包含n个整数a 1,a_ 2.. n,相邻的整数间用空格分隔,表示给定的数列。

输出格式

        输出一行包含一个整数, 表示答案。

样例输入

        5

        9   4   2   4   7

样例输出

        9

样例说明

        a_ 1和a 3的距离为|1-3|+|9-2|=9。

评测用例规模与约定

        对于50%的评测用例,2<=n<=100,0<=数列中的数<=1000.
        对于所有评测用例,2 <= n <= 1000, 0 <=数列中的数<= 10000。


C语言解决方法:

#include <stdio.h>
#include <math.h>

int main(){
	int num[100],i,j,n,b=0,m=0,max=0;
	scanf("%d",&n);//第一行
	for(i=0;i<=n;i++){
		scanf("%d",&num[i]);//第二行 
	} 
	for(i=0;i<n-1;i++){  // 数组从0开始 
		for(j=i+1;j<n;j++){  //j = i的下一个数  所以j=i+1 
			b = abs(i-j)+abs(num[i]-num[j]);
			if(m > b){  //依次比较找出最大的元素距离 
				max = m;
			}
			else{
				max = b;
			}
			m++;
		}
	}
	printf("%d",max);
	return 0;
}
 

运行结果示例:


python解决方法:

        按照题目的要求,列表只能从1开始所以列表前面补零,i是从1开始的,而j开始遍历的时候,j就会比i永远多一个。

# 在数列a_ 1,a_2, n中,定义两个元素a_ i和a_ j的距离为|i+j|+la_ i-a_ j|,
# 给定一个数列,请问找出元素之间最大的元素距离。
n = int(input())  # 第一行输入整数
num = [0] + list(map(int, input().split(" ")))  # 因为列表第一个数为0 所以+0
max_1 = 0
for i in range(1, n):
    for j in range(i+1, n+1):
        a = j-i + abs(num[j] - num[i])
        if a > max_1:
            max_1 = a
print(max_1)

运行结果示例:


总结

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值