BOJ 1182部分数列の和


https://www.acmicpc.net/problem/1182
時間1秒、メモリ128 MB
input :
  • N S(1 ≤ N ≤ 20, |S| ≤ 1,000,000)
  • 整数(整数の節値は100000を超えない).
  • output :
    出力
  • Sの部分数列数
  • 条件:
  • プログラムは、1つの整数列のすべての要素の整数がSのときの整数を求めるために使用される.
    2つのポインタを利用したり、組み合わせを利用したりする方法があるようです.
    私はただ組み合わせるだけで、Sならans値を一つ一つ増やします.
    import sys
    from itertools import combinations
    
    n, s = map(int, sys.stdin.readline().split())
    data = list(map(int, sys.stdin.readline().split()))
    ans = 0
    for i in range(1, n + 1):
        for item in combinations(data, i):
            if sum(item) == s:
                ans += 1
    print(ans)
    
    ダブルポインタを使う場合は、正数リストと負数リストに分けます.
    正数のすべての値を加えて、コストを表示します.逆も同様です.
    でもこれは完全に探求しているので、ハハハは大丈夫でしょう...