728x90
https://www.acmicpc.net/problem/15650
15650번: N과 M (2)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
1. 이전에 풀었던 N과M(1)과 매우 유사하다 단지 오름차순으로 출력이 되어야한다는것이 다르다.
2. 오름차순이니까 prev라는 변수를 따로 선언해서 prev = result[count - 1] 이라는 조건으로 오름차순을 만들어준다.
3. i = prev 조건으로 인해 while문이 돌아가면서 오름차순이 만들어진다.
4. 나머지는 전에 했던 N과M(1)의 내용과 동일하다.
나의답안)
#include <stdio.h>
void DFS2(int *result, int count, int N, int M)
{
int i, j, flag;
int prev;
if (count == M)
{
i = 0;
while (i < M)
{
printf("%d ", result[i]);
i++;
}
printf("\n");
}
else
{
prev = 1;
if (count > 0)
prev = result[count - 1];
i = prev;
while (i <= N)
{
j = 0;
flag = 0;
while (j < count)
{
if (result[j] == i)
flag = 1;
j++;
}
if (flag == 0)
{
result[count] = i;
DFS2(result, count + 1, N, M);
}
i++;
}
}
}
int main()
{
int N, M;
scanf("%d %d", &N, &M);
int result[M];
DFS2(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 |
백준 15649번 -N과M(1) c언어 (0) | 2023.01.11 |
댓글