게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C++ 잘 하시는분 계신가요?ㅠㅠㅠㅠㅠ
게시물ID : computer_165207짧은주소 복사하기
작성자 : 변신새끼
추천 : 0
조회수 : 297회
댓글수 : 8개
등록시간 : 2014/04/15 08:55:47
옵션
  • 베스트금지
정말 죄송합니당 ㅠㅠ

제가 정말 머리가 안좋은지 공부중인데 주석이 달려있는데도 코딩을 이해를 못하겠어용 ㅠㅠ

#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;
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호