728x90
https://www.acmicpc.net/problem/15649
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
1. 1줄씩 출력해야 한다고 생각해서 배열을 사용하여 내용물을 저장했다가 출력하자는 생각함
2. 이떄 서로 중복 없이 숫자를 골라서 저장하고 출력해야 한다. 따라서 DFS전략을 이용해 재귀문을 사용한다.
3. flag 를 사용해서 중복되는 숫자를 판별해준다.
나의 답안)
#include <stdio.h>
void DFS(int *result, int count, int N, int M)
{
int i,j;
int flag;
if (count == M)
{
i = 0;
while (i < M)
{
printf("%d ", result[i]);
i++;
}
printf("\n");
}
else
{
i = 1;
while (i <= N)
{
flag = 0;
j = 0;
while (j < count)
{
if (result[j] == i)
flag = 1;
j++;
}
if (flag == 0)
{
result[count] = i;
DFS(result, count + 1, N, M);
}
i++;
}
}
}
int main()
{
int N,M;
scanf("%d %d", &N, &M);
int result[M];
DFS(result, 0, N, M);
return (0);
}
728x90
'backjoon > DFS && BFS' 카테고리의 다른 글
백준 1697 java (0) | 2024.02.05 |
---|---|
백준 15651 - N과M(3) c언어 (0) | 2023.01.17 |
백준 15650 - N과M(2) c언어 (0) | 2023.01.14 |
댓글