부분수열의 합

주차
0
문제번호
1182
언어
C++
티어
실버
유형
브루트포스
백트래킹
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

Memo

로직 설명

깊이를 증가시켜가며, 모든 부분집합을 구해내서 그 합이 S와 같은지 확인하는 방법으로 문제를 풀었습니다.

Code

제출 날짜

@4/25/2021

메모리

2016 KB

시간

32 ms
#include <iostream> int N, S; int sq[21]; int ans, max_depth; void io_faster() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { io_faster(); std::cin >> N >> S; for (int i = 0 ; i < N ; i++) std::cin >> sq[i]; } void brute_force(int index, int val, int depth) { if (depth == max_depth) { if (val == S) ans++; return; } for (int i = index; i < N ; i++) brute_force(i + 1, val + sq[i], depth + 1); } void solve() { for (int i = 1 ; i <= N ; i++) { max_depth = i; brute_force(0, 0, 0); } } void print_val() { std::cout << ans; } int main() { input(); solve(); print_val(); return (0); }
C++
복사