将 n 个正整数作成的一个数列,进行如下操作:每一次删除其中的两个数 a 和 b,然后在数列中加入一个数a×b+1,如此下去直至数列中剩下一个数。 在所有按这种操作方式最后得到的数中,最大的记作 max,最小的记作 min,则该数列的极差定义为m=max-min,请你使用贪心算法设计编程输出他们的极差。
时间: 2023-05-03 09:01:46 浏览: 180
思路:
1. 定义一个长度为n的数组a,并初始化为正整数的数列。
2. 每一次删除其中的两个数a、b,即将a+b+1加入数列。
3. 计算数列的最大值和最小值之差,并输出结果。
代码如下:
```
n = int(input())
a = [i+1 for i in range(n)] # 初始化为正整数的数列
while len(a) > 1:
# 选择其中的两个数a、b
a_idx = a.index(max(a))
a = a[:a_idx] + a[a_idx+1:]
b_idx = a.index(max(a))
b = a[b_idx]
a = a[:b_idx] + a[b_idx+1:]
# 将a+b+1加入数列
a.append(a+b+1)
# 计算数列的最大值和最小值之差
m = max(a) # 最大值
n = min(a) # 最小值
diff = m - n # 极差
print(diff)
```
阅读全文