求大佬来帮帮忙
1-n个数排成一个圆环,定义距离为相邻两个数差的平方,求距离的平方和最大时,圆环的排列 没有太好的思路,只好用暴力的方法。先做出1~n的排列,由于是环形,可以把1固定,这样做2~n的排列就可以了。然后一一计算得到最大值。
我用python写了一个。
import itertools
n = 7
max1 = 0
for i in itertools.permutations(range(2, n + 1), n - 1):
sum1 = 0
lst = list(i)
lst.insert(0, 1)
for j in range(len(lst)):
sum1 += (lst - lst[(j + 1) % len(lst)]) ** 2
if sum1 > max1:
max1 = sum1
lst2 = lst[:]
print(lst2)
页:
[1]