728x90
https://www.acmicpc.net/problem/15649
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 |
댓글