12週目#1715カードソート


🐶 質問する


バックアップリンク

💬 初志

  • がどのようにソートされるかは重要ではありません.ソート順の場合、各数字は比較回数を求める必要があるようですが、すべての場合、求めた数字は確率と統計のnprを思い浮かべます.ここですべてのカードを引くのでnpnなら最終的にn!等しい.
    では最悪の場合は100000!計算しなければならない症例です.
    見ただけで2億回を超える計算になることがわかります.
  • そうすれば最小演算の法則を見つけなければなりません
    直観的に考えると、一番前の数字が一番繰り返して、一番前の数字が一番小さいはずです.
  • ✔」初めての試み


    「一番前の数字が最も多く繰り返され、一番前の数字が一番小さいはず」ということを表しています.

    そう考えると点火式.
    a 1=n 1+n 2、残りa=nn(ただし、n>=2)a 1=n 1+n 2、残りa n=n(ただし、n>=2)a=n 1+n 2、残りa=nn(ただし、n>=2)
    Σ1k{n1∗k+n2∗(k−1)+...+nn∗1}\Sigma_1^k\{n_1*k+n_2*(k-1)+...+n_n*1\}Σ1 kͧk+n 2ͭ(kͧ1)+...+nnͧ1}に整理します.
    # 데이터 입력
    N = int(input())
    data = []
    for _ in range (N) :
      data.append(int(input()))
    print(data)
    
    # 데이터 오름차순 정렬
    data = data.sort()
    data_len = len(data)
    
    # 점화식 예외
    if data_len == 1 :
      print(data[0])
      exit(0)
    
    # 점화식 전처리
    result = 0
    first_set = data[0] + data[1]
    del data[0]
    del data[1]
    data.insert(0, first_set)
    
    # 점화식
    for i in range(data_len) :
      for _ in range(0, i+1, 1) :
          result += data[i]
    
    print(result)
    
    でもずっと

    もういいのにこんな間違いを犯すなんて
    どうしてリストの長さを求められないのですか?
    この時間を検索すると