예제 입력 1
7 1 2 3 4 5 6 7
8 1 2 3 5 8 13 21 3
0
예제 출력 1
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7
1 2 3 5 8 13
1 2 3 5 8 21
1 2 3 5 8 34
1 2 3 5 13 21
1 2 3 5 13 34
1 2 3 5 21 34
1 2 3 8 13 21
1 2 3 8 13 34
1 2 3 8 21 34
1 2 3 13 21 34
1 2 5 8 13 21
1 2 5 8 13 34
1 2 5 8 21 34
1 2 5 13 21 34
1 2 8 13 21 34
1 3 5 8 13 21
1 3 5 8 13 34
1 3 5 8 21 34
1 3 5 13 21 34
1 3 8 13 21 34
1 5 8 13 21 34
2 3 5 8 13 21
2 3 5 8 13 34
2 3 5 8 21 34
2 3 5 13 21 34
2 3 8 13 21 34
2 5 8 13 21 34
3 5 8 13 21 34
- 조합에서 STL 없이 next_permutation 안쓰는게 나을 듯
#include <stdio.h>
#define MAX_SIZE (14)
void DFS(int* num, bool* visited, int start, int N, int r)
{
if (r == 0)
{
for (int i = 0; i < N; i++)
{
if (visited[i]) printf("%d ", num[i]);
}
printf("\n");
return;
}
for (int i = start; i < N; i++)
{
visited[i] = true;
DFS(num, visited, i + 1, N, r - 1);
visited[i] = false;
}
}
int main(void)
{
while (true)
{
int N;
int num[MAX_SIZE];
bool visited[MAX_SIZE];
scanf("%d", &N);
if (N == 0) return 0;
for (register int i = 0; i < N; i++)
{
scanf("%d", &num[i]);
visited[i] = false;
}
DFS(num, visited, 0, N, 6);
printf("\n");
}
return 0;
}
'Algorithm > Algorithm' 카테고리의 다른 글
[재귀] N과 M(1) (0) | 2019.10.28 |
---|---|
순열 활용하기 (0) | 2019.09.13 |
파스칼의 삼각형 (0) | 2018.10.01 |
[그래프] 인접 리스트 (0) | 2018.08.21 |
Quick Sort / Merge Sort (0) | 2018.08.21 |