본문 바로가기

dp

(21)
[BOJ] 15989번 1, 2, 3 더하기 4 (C++) https://www.acmicpc.net/problem/15989 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 www.acmicpc.net #include using namespace std; int main() { long long dp[10001][4] = { 0, }; dp[1][1] = 1; dp[2][1] = 1; dp[2][2] = 1; dp[3][3] = 1; for(int i = 3; i 3) dp[i][3] = dp[i - 3][1] + dp[i - 3][..
[BOJ] 10826번 피보나치 수 4 (C++) https://www.acmicpc.net/problem/10826 10826번: 피보나치 수 4 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net #include #include #include using namespace std; int n; string dp[10001]; string big_num_sum(string a, string b){ int sum; string s; vector v, num1, num2; if(a.size() < b.size()){ string tmp = a; a = b;..
[BOJ] 1010번 다리 놓기 (C++) https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 > t; int dp[31][31] = {0, }; for(int i = 1; i n >> m; cout
[BOJ] 9461번 파도반 수열 (C++) https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int t, n; cin >> t; long long dp[101] = {0, }; dp[1] = 1; dp[2] = 1; dp[3] = 1; dp[4] = 2; dp[5] = 2; for(int i = 6; i > n; cout
[BOJ] 12865번 평범한 배낭 (C++) https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net #include using namespace std; int main() { int n, k; int w[101] = { 0, }; int v[101] = { 0, }; int dp[101][100001] = { 0, }; cin >> n >> k; for (int i = 1; i > w[i] >> v[i]; } for (int i..