BOJ 10819格差最大


https://www.acmicpc.net/problem/10819
1秒、256 MBメモリ
input :
  • N (3 ≤ N ≤ 8)
  • 整数(-100<=整数<=100)
  • output :
  • 式の最上位出力は
  • である.
    条件:
  • |A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]|
  • 配列をリストできるすべての方法では、上記の条件で計算し、最大値を求めればよい.
    配列に最も多くの要素が入っている場合は8つですこれらをリストアップする方法は8です!4万しかありません.
    そこで,配列法を用いて可能なすべての状況の数を計算した.
    import sys
    import itertools
    
    n = int(sys.stdin.readline())
    data = list(map(int, sys.stdin.readline().split()))
    
    permutation = itertools.permutations(data, n)
    
    ret = -9999
    for item in permutation:
        cnt = 0
        l_idx = 0
        r_idx = n - 1
        while l_idx < r_idx:
            cnt += abs(item[l_idx] - item[r_idx])
            l_idx += 1
            if l_idx == r_idx:
                break
            cnt += abs(item[l_idx] - item[r_idx])
            r_idx -= 1
        ret = max(ret, cnt)
    print(ret)