[#1182]部分数列の和


❓ Question



📖 Before Start


組み合わせと並べ替え、この2人は本当に連続して現れた友达です.
今高校で数列を習わないというニュースを聞いて、筆者は本当に大きな衝撃に陥った.
「じゃあ、数列を全く知らない人はどうやってこの問題を解くの?」私にしばらく考えさせた.

✒️ Design Algorithm


この問題は比較的容易な類に属する.これは無条件の組み合わせの問題です!
プログラミングでソートやコンビネーションに出会えるとは思わなかったが、人生はどうなるのか分からなかった.
幸いなことに、筆者はこの問題に直面する前に、itertoolsライブラリの存在を他の場所で知っていた.
私が自分でソートと組み合わせを実現しなくても、ライブラリで実現することができます.Pythonは明らかに詐欺です.
以下は筆者が問題を解く前に作成したアルゴリズム設計である.
最初の行は、整数の個数Nと、標準的な整数Sとして与えられる.
2行目にはN個の整数がスペースを隔てて連続的に与えられる.
  • N個の整数から抽出した1에서 N-1개の組合せの和を求める.
  • の和がS와 같다면の場合、数を表す変数に1を加えます.
  • 💻 Making Own Code

    import sys
    import itertools as itr
    
    n, s = map(int, sys.stdin.readline().split())
    data, result = list(map(int, sys.stdin.readline().split())), 0
    
    for i in range(1, n+1):
        for c in itr.combinations(data, i):
            if sum(c) == s:
                result += 1
    print(result)
    ソートと組合せはitertoolsライブラリを使用するのが最善の解決策だと考えています.
    この問題もitertoolscombination(data, number)を用いて解題に成功した.
    しかし、筆者は一部の数列に自分も含まれていることを知らずに提出して八爪魚を一口食べた.
    皆さんも筆者の場合のように、間違いなく問題をよく解いてください.