15651 : N과 M (3)

네르기·2021년 8월 27일
0

알고리즘

목록 보기
31/76

어떤 문제인가?

백트래킹 문제. 15649, 15650의 변형.

내 풀이

#include <stdio.h>

int N,M;
int P[8]={0};

void d(int s) {
    int i=1,j;
    if(s==M+1) {
        for(;i<=M;i++) printf("%d ", P[i]);
        printf("\n");
        return;
    }
    for(j=1;j<=N;j++) {
        P[s]=j;
        d(s+1);
    }
}

int main() {
    scanf("%d%d",&N,&M);
    d(1);
}

기본 조건:

  • 배열 길이가 MM이 되면 정지 후 출력.

탐색 방법:

  • 그래프를 그리면 쉽게 알 수 있다. 모든 수에 대해 추가하면 된다.

다른 사람들의 풀이

똑같다. 내 코드보다 더 짧을 뿐.

#include <stdio.h>

int n, m, a[7];

void recur(int d) {
	int i;
	if (d == m) {
		for (i = 0 ; i < m ; i++) printf("%d ", a[i]);
		printf("\n");
		return;
	}
	for (i = 1 ; i <= n ; i++) {
		a[d] = i;
		recur(d + 1);
	}
}

int main() {
	scanf("%d%d", &n, &m);
	recur(0);
}

goooora님 소스
-> https://www.acmicpc.net/source/9501370

profile
프로그래머와 애니메이터가 되고파

0개의 댓글

관련 채용 정보