반응형

순열 알고리즘 5

[C언어 알고리즘] 6.1.4 순열 알고리즘 소스 코드

[C언어 알고리즘] 6.1.4 순열 알고리즘 소스 코드//common.h #pragma once //헤더 파일을 한 번만 포함해서 컴파일 #include #include #include #include #include #include #include #pragma warning(disable:4996) //4996컴파일 경고 메시지 출력 해제 //Array.h #pragma once typedef void * Element; typedef struct _Array Array; struct _Array { Element *base; int capacity; int usage; }; typedef Element *Iterator; Array *New_Array(); void Delete_Array(Array..

[C언어 알고리즘] 6.1.3 순열 알고리즘 테스트 코드 작성

[C언어 알고리즘] 6.1.3 순열 알고리즘 테스트 코드 작성 먼저 시뮬레이션에 사용할 초기 바구니에 넣을 공의 집합을 생성하는 함수를 작성할게요. Array * InitSimulation() { int ball = 0; Array *bucket = 0; 먼저 동적 배열을 생성합니다. bucket = New_Array(); 0번 공부터 9번 공까지 순차적으로 이동하면서 배열에 순차 보관합니다. for(ball = 0; ball> 뒤에 명시한 파일로 출력합니다. 결과 파일을 더블 클릭하여 원하는 모든 결과를 출력하는지 확인해 보세요.

[C언어 알고리즘] 6.1.2 순열 알고리즘의 경험 정보 구현

[C언어 알고리즘] 6.1.2 순열 알고리즘의 경험 정보 구현 초기 경험 정보를 생성하는 함수를 작성합시다. Heuristic *MakeInitHeuristic(Array *bucket) { Heuristic *heu = 0; 입력 인자로 전달받은 바구니에 있는 공을 순차적으로 접근하기 위해 반복자 변수를 두 개 선언할게요. Iterator seek=0, end=0; Heuristic 크기의 메모리를 할당합니다. heu = (Heuristic *)malloc(sizeof(Heuristic)); 꺼내지 않은 공을 보관할 동적 배열과 꺼낸 공을 보관할 동적 배열을 생성합니다. heu->ori_bucket = New_Array(); heu->out_bucket = New_Array(); 입력 인자로 전달받은 ..

[C언어 알고리즘] 6.1.1 순열 알고리즘의 경험(Heuristic)정보 설계

[C언어 알고리즘] 6.1.1 순열 알고리즘의 경험(Heuristic)정보 설계 바구니에서 공을 꺼내는 순열 문제의 경험 정보는 꺼내지 않은 공의 집합과 꺼낸 공의 집합이라 할 수 있습니다. 여기에서는 동적 배열을 이용하여 꺼낸 공과 꺼내지 않은 공의 집합을 표현할게요. 동적 배열과 연결리스트, 스택에 관한 코드 설명은 이 책에서는 하지 않습니다. 디딤돌 자료구조 (C언어)를 참고하세요. 이에 관한 소스 코드는 6.1.4 순열 알고리즘 소스 코드에 있습니다. typedef struct _Heuristic Heuristic; struct _Heuristic { Array *ori_bucket; Array *out_bucket; }; 초기 경험 정보를 생성하는 함수를 제공합시다. 이 함수에는 초기 바구니에 ..

[C언어 알고리즘] 6.1 순열 알고리즘

[C언어 알고리즘] 6.1 순열 알고리즘 바구니에 있는 여러 개의 공을 꺼내는 순서의 조합을 찾는 것은 대표적인 순열 문제입니다. 그리고 확률과 통계를 얘기할 때도 순열 문제는 자주 등장합니다. 바구니에서 공을 꺼내는 문제에서는 바구니에 남아있는 공과 꺼낸 공의 조합이 경험정보입니다. 이러한 경험 정보를 스택을 이용하여 동적 알고리즘으로 해결하면 어렵지 않게 문제를 해결할 수 있습니다. 하지만 모든 경험을 수행해야 하기 때문에 단계가 많고 현재 단계에서 다음 단계로 진행할 수 있는 가지 수가 많을 때 수행 속도가 무리하게 커질 수 있는 문제점도 갖고 있습니다. 여기에서 구현할 예는 바구니에 서로 다른 숫자가 써 있는 공이 있을 때 n개의 공을 하나씩 꺼내는 예로 할게요. 이 때 꺼낸 순서를 포함하여 나올..

반응형