프로그래밍 알고리즘
[정올 1169] 주사위던지기1
꾸준한사람
2022. 12. 31. 03:12
반응형
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=449&sca=99&sfl=wr_hit&stx=1169
JUNGOL
www.jungol.co.kr
#include <stdio.h>
int N, M, mt[6*6*6*6*6 + 10][5], cnt, comb[5];
inline int getBgIdx(int idx) {
if (M == 2) {
if (idx == 0) return 1;
else return comb[idx - 1];
}
return 1;
}
int check(int idx) {
if (M == 3) {
if (idx == 0) return 1;
for (int i = 0; i < idx; i++)
if (comb[i] == comb[idx]) return false;
}
return true;
}
void fill(int idx) {
if (idx == N) {
for (int i = 0; i < N; i++) mt[cnt][i] = comb[i];
cnt++;
return;
}
for (int i = getBgIdx(idx); i <= 6; i++) {
comb[idx] = i;
if (check(idx)) fill(idx + 1);
}
}
int main(void) {
scanf("%d %d", &N, &M);
fill(0);
for (int i = 0; i < cnt; i++) {
for (int j = 0; j < N; j++) printf("%d ", mt[i][j]);
printf("\n");
}
return 0;
}
반응형