白駿18429斤損失(Python使用)


何の問題ですか。


タイトルの問題、完全にナビゲートできる問題.

作成したソリューション


再帰的な方法で徹底的に探求した.

問題の思考点


コール
  • は、500重量未満の場合はナビゲーションを必要とせず、ナビゲーションを停止する.(Backtracking)
  • コード実装

    N, K = map(int, input().split())
    
    kit = list(map(int, input().split()))
    
    chk = [0]*N
    result = 0
    
    def f(k, weight):
        global result
    	
        # Backtracking
        if weight < 0:
            return
        if k >= N:
            result += 1
            return
    
        for i in range(N):
            if chk[i] == 0:
                chk[i] = 1
                f(k+1, weight+kit[i]-K)
                chk[i] = 0
    f(0, 0)
    
    print(result)