로그인

검색

Algorithm
2012.08.13 10:07

동적 프로그래밍

조회 수 3586 추천 수 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. Visual C++ 시리얼 통신(RS-232) 강좌 (1)

  3. High-speed Charting Control

  4. DLL 이란

  5. extern "C" 에 관하여

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

  7. InvalidateRect 함수, flag성 메세지

  8. UpdateWindow 함수에 대하여..

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

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

  11. CPaneDialog 초기화 (OnInitDialog)

  12. CDockablePane 버튼 비활성화 문제

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

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

  15. CPaneDialog의 context menu 안뜨게 하기

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

  17. Which Font is the default for MFC Dialog Controls

  18. 시스템 분석을 위한 쉘 명령어

  19. logcat 사용법

  20. 리스트뷰에 체크박스 추가 예제

  21. PackageBroadcastReceiver 구현

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