DP 4

[Algorithm/C] BOJ.1932 숫자삼각형

문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 숫자 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 숫자는 모두 정수이며, 범위는 0 이상 9999 이하이다. 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1줄까지 숫자 삼각형이 주어진다. 출력 첫째 줄에는 최대가 되는 합을 출력한다. 예제 입력 복사 5 7 3 8 8 ..

[Algorithm/C] BOJ.1003 피보나치 함수

문제 다음 소스는 N번째 피보나치 함수를 구하는 함수이다. 1 2 3 4 5 6 7 8 9 10 11 int fibonacci(int n) { if (n==0) { printf("0"); return 0; } else if (n==1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다. fibonacci(2)는 fibonacci(1) (두 번째 호출)과 fibonacci(0)을 호출한다. 두 번째 호출한 fibonacci(1)은 1을 출력하고 1을 리턴한..

[Algorithm/C] BOJ.2698 인접한 비트의 개수

Click to download. 접근 방법1. 처음 든 생각 : Combination 도저히 풀리지 않음.2. 배열을 만들어 볼까 생각 이것도 안풀림.3. Dynamic programming으로 접근해야함. #include int theNumberOfCase[102][102][2]={0}; int main(int argc, char * argv[]){int testCase;int lenSequence;int adjacentBits;int i,j; theNumberOfCase[1][0][0]=theNumberOfCase[1][0][1]=1; // 0 이나 1을 뜻함 for(lenSequence=2; lenSequence