2014. 10. 28. 09:55ㆍSecurity ★ Development/알고리즘
* 틀린 내용이 있을 시 지적 부탁드립니다.
문제는 더블릿 21 dynamic programming에 있는 partition입니다.
문제 사이트 주소입니다.
http://183.106.113.109/30stair/partition/partition.php?pname=partition
문제에 나와있는 것 처럼 특정 수의 분할 수를 구하는것이 목표입니다.
dp배열을 행을 특정 수, 열을 그 가짓수로 만들 수 있는 특정 수의 개수라고 했을 때 나열해보면
1 2 3 4 5 6 7 8
1 1 0 0 0 0 0 0 0
2 1 1 0 0 0 0 0 0
3 1 1 1 0 0 0 0 0
4 1 2 1 1 0 0 0 0
5 1 2 2 1 1 0 0 0
6 1 3 3 2 1 1 0 0
7 1 3 4 3 2 1 1 0
8 1 4 5 5 3 2 1 1
이렇게 됩니다.
여기서 규칙을 찾아보면 dp[행][열]의 값은 dp[행-1][열-1]+dp[행-열][열]인 것을 알 수 있습니다.
dp[8][2]=dp[7][1]+dp[6][2]
입력받은 수까지 돌리고 마지막 행의 값을 모두 더해서 출력해주면 됩니다.
'Security ★ Development > 알고리즘' 카테고리의 다른 글
다차원배열 2 (0) | 2014.10.29 |
---|---|
재귀 1 (0) | 2014.10.28 |
for 1 (0) | 2014.10.28 |
함수 1 (0) | 2014.10.26 |
dynamic programming 3 (0) | 2014.10.20 |