10 이하의 자연수 N을 입력받아 주사위를 N번 던져서 나올 수 있는 모든 경우를 출력하되 중복되는 경우에는 앞에서부터 작은 순으로 1개만 출력하는 프로그램을 작성하시오.
#include <stdio.h>
#include <stdlib.h>
int multi(int num)
{
int num1=1;
int i;
for(i=0;i<num;i++)
num1=num1*6;
return num1;
}
int compare(int *arr,int num)
{
int j;
int cheak=0;
for(cheak=0,j=9;j>10-num;j--)
{
if(arr[j-1]>arr[j])
cheak++;
}
return cheak;
}
int print(int *arr,int num)
{
int j;
if(compare(arr,num)==0)
{
for(j=10-num;j<10;j++)
{
printf("%d",arr[j]+1);
}
printf("\n");
}
}
int main(void)
{
int arr[10];
int i=0,k=0, j, mok=0;
int nmg;
int num;
printf("10 이하의 자연수 N을 입력하시오.\n");
scanf("%d",&num);
for(i=0;i<multi(num);i++)
{
mok=i;
for(j=0,k=9;j<num;j++)
{
nmg=mok%6;
mok=mok/6;
arr[k]=nmg;
k--;
}
print(arr,num);
}
system("pause");
return 0;
}