-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path1182.js
More file actions
40 lines (30 loc) · 807 Bytes
/
1182.js
File metadata and controls
40 lines (30 loc) · 807 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
백트래킹
재귀 직후에 S인지 검사
아니면 추가 재귀
*/
// input
const inputFile = process.platform === 'linux'? '/dev/stdin' : './input';
const [N, S, ... seq] = require('fs').readFileSync(inputFile).toString().trim().split(/\s/).map(Number);
// process
let count = 0;
let visited = new Array(N);
find_subseq_sum(0, 0, 0);
// output
console.log(count);
// function
function find_subseq_sum(current_index, current_sum, depth)
{
if (depth > 0 && current_sum === S)
count++;
if (depth === N) return;
for (let i=current_index; i<N; i++)
{
if (visited[i]) continue;
visited[i] = true;
current_sum += seq[i];
find_subseq_sum(i, current_sum, depth + 1);
current_sum -= seq[i];
visited[i] = false;
}
}