로그인

검색

Algorithm
2012.08.13 10:07

동적 프로그래밍

조회 수 4565 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄

1. 팩토리얼 계산하는 문제


분할 정복

int factorial(int n)
{
if(n==1) return 1; 
else return n*factorial(n-1);

동적 프로그래밍

int factorial(int n)
{
int i;
int product = 1;
for(i=1;i<=n;i++) product *= i;
return product;
}


2. 피보나치 수열 구하는 문제


f(n) = f(n-1) + f(n-2) 인 규칙을 가지는 피보나치 수열 계산


분할 정복

int fibonacci(int n)
{
if(n==1 || n==2) return 1;
else return fibonacci(n-1) + fibonacci(n-2);
}


동적 프로그래밍

int fibonacci(int n)
{
int i,series;
int last1 = 1;
int last2 = 1;

if(n==1 || n==2) return 1;
else
{
for(i=2; i<n; i++)
{
series = last1 + last2;
last1 = last2;
last2 = series;
}

return sereis;
}
}


3. 이항 계수 구하는 문제


nCr = n-1Cr-1 + n-1Cr 공식 이용하여 이항 계수 계산


분할 정복

int bincoeff(int n, int k)
{
if(k==0 || k==n) return 1;
else return bincoeff(n-1, k-1) + bincoeff(n-1, k);
}

동적 프로그래밍

int bincoeff(int n, int k)
{
int i,j;
int B[0...n][0...n];
for(i=0; i<n; i++)
for(j=0; j<min(i,k); j++)
if(j==0 || j==i) B[i][j] = 1;
else B[i][j] = B[i-1][j-1] + B[i-1][j];
}


동적 프로그래밍으로 하는 경우 중복하여 계산하게 되는 경우를 막을 수 있으므로 계산시간이 더 빠르다.


?

  1. Programming 게시판 관련

  2. MFC TIP

  3. 이미지공학(IE) 연구실

  4. CString class

  5. Visual C++ 시리얼 통신(RS-232) 강좌 (2)

  6. Visual C++ 시리얼 통신(RS-232) 강좌 (1)

  7. High-speed Charting Control

  8. DLL 이란

  9. extern "C" 에 관하여

  10. UpdateData(TRUE) or UpdateData(FALSE) 구분

  11. InvalidateRect 함수, flag성 메세지

  12. UpdateWindow 함수에 대하여..

  13. 다이얼로그 resize 시 child control의 그래픽 깨짐 해결

  14. Property Sheet의 버튼 속성 변경하기

  15. CPaneDialog 초기화 (OnInitDialog)

  16. CDockablePane 버튼 비활성화 문제

  17. CDockablePane 배경화면 회색으로 변경

  18. What to use instead of “addPreferencesFromResource” in a PreferenceActivity?

  19. CPaneDialog의 context menu 안뜨게 하기

  20. 리스트 컨트롤 클릭 이벤트

  21. Which Font is the default for MFC Dialog Controls

Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 Next
/ 17