정말 죄송합니당 ㅠㅠ
제가 정말 머리가 안좋은지 공부중인데 주석이 달려있는데도 코딩을 이해를 못하겠어용 ㅠㅠ
#include <stdio.h>
#include <stdafx.h>
void mix(int arr[20],int n,int d)
{
int i,j,flag;
if(d==n) //입력한 n과 현재까지의 진행개수와 동일하면..
{
for(i=0;i<n;i++) //지금까지 구해진 순열을 출력합니다.
printf("%d ",arr[i]);
printf("\n"); //줄바꿈
return; //다음을 진행하지 않고.. return;
}
for(i=0;i<n;i++)
{
flag=0;
for(j=0;j<d;j++) //i가 이미 사용되지 않은 번호인지를 조사합니다.
{
if(arr[j]==i+1) //만약 사용된 번호면.. <-- 이부분이 이해가잘안되요!!! ㅠㅠ혹시 설명해주실수있는분계신가요유ㅠ이
{
flag=1; //flag를 1로 수정..
break;
}
}
if(flag==0) //사용되지 않음 번호면..
{
arr[d]=i+1; //arr배열에 i+1을 저장..(사용여부 표시)
mix(arr,n,d+1); //재귀 호출을 통해 다시 mix호출..
arr[d]=0; <---- 요기는왜 다시 0이 되는거죠 ㅠㅠㅠ 이 코딩좀 설명해주실분 있으신가요..ㅠㅠ 독학이라 질문할데가없어요..
}
}
}
int main(void)
{
int n,arr[20]={0,};
printf("n입력(1~20) : ");
scanf("%d",&n);
mix(arr,n,0);
return 0;
}