Programming/Algorithm

[Algorithm] C++ 특정 수 만들기(DFS)

100winone 2020. 1. 7. 13:26

입력예제 1

4 12 

2 4 6 8

 

출력예제 1

4

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<vector>
#include<algorithm>

using namespace std;
int a[11], n, m, cnt = 0;

void DFS(int L, int val) {
	if (L == n + 1) {
		if (val == m) cnt++;
	}
	else {
		DFS(L + 1, val + a[L]);
		DFS(L + 1, val - a[L]);
		DFS(L + 1, val);
	}
}

int main() {
	int i;
	scanf("%d %d", &n, &m);
	for (i = 1; i <= n; i++) {
		scanf("%d", &a[i]);
	}
	DFS(1, 0);
	if (cnt == 0) printf("-1\n");
	else printf("%d\n", cnt);
	return 0;
}