백트래킹 문제. 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);
}
기본 조건:
탐색 방법:
똑같다. 내 코드보다 더 짧을 뿐.
#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);
}