본문 바로가기

알고리즘/DP89

2163 초콜릿 자르기 123456789#include int main() { int n, m; scanf("%d %d", &n, &m); int rst = (n - 1) + n * (m - 1); printf("%d", rst);}Colored by Color Scriptercs 2019. 7. 5.
2167 2차원 배열의 합 12345678910111213141516171819202122232425262728#include int arr[305][305] = { 0 };int dp[305][305] = { 0 }; int main() { int n, m; scanf("%d %d", &n, &m); for (int i = 1; i 2019. 7. 5.
11727 2*n 타일링 12345678910111213141516#include int dp[1005] = { 0 }; int main() { int n; scanf("%d", &n); dp[0] = 1; dp[1] = 1; for (int i = 2; i 2019. 7. 5.
11053 가장 장 긴 증가하는 부분수열 12345678910111213141516171819202122232425262728293031#include int arr[1005] = { 0 };int dp[1005] = { 0 }; int main() { int n; scanf("%d", &n); for (int i = 1; i 2019. 7. 5.
1912 연속합 12345678910111213141516171819202122232425262728293031#include #include using namespace std; int num[100005] = { 0 };long long dp[100005] = { 0 }; int main() { int n; scanf("%d", &n); for (int i= 1; i 2019. 7. 5.
2156 포도주 시식 123456789101112131415161718192021222324#include #include using namespace std; int main() { int n; scanf("%d", &n); int drink[10005] = { 0 }; int dp[10005] = { 0 }; for (int i = 1; i 2019. 7. 5.
1003 피보나치 함수 123456789101112131415161718192021222324252627282930313233343536#include typedef struct fib { int aNum = 0; int bNum = 0;}; int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); fib arr[50]; arr[0].aNum = 1; arr[0].bNum = 0; arr[1].aNum = 0; arr[1].bNum = 1; if (n == 0) { printf("%d %d\n", arr[0].aNum, arr[0].bNum); continue; } else if (n == 1) { printf("%d %d\n", arr[1].aNum.. 2019. 7. 5.
2579 계단오르기 1234567891011121314151617181920212223#include #include using namespace std; int stair[305] = { 0 };int dp[305] = { 0 }; int main() { int n; scanf("%d", &n); for (int i = 1; i 2019. 7. 5.
9095 1,2,3 더하기 1234567891011121314151617181920212223242526272829303132333435#include int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); if (n == 1) { printf("1\n"); continue; } else if (n == 2) { printf("2\n"); continue; } else if (n == 3) { printf("4\n"); continue; } long long a = 1, b = 2, c = 4, rst; for (int i = 4; i 2019. 7. 5.
2193 이친수 1234567891011121314151617181920#include int main() { long long n; scanf("%lld", &n); if (n == 1 || n == 2 ) { printf("1"); return 0; } long long a = 1, b = 1, c = 0; for (int i = 3; i 2019. 7. 5.
(미해결) buy lower 더블릿 #include #include #include using namespace std; int dp[5005] = { 0 };int arr[5005] = { 0 };vector par(5005);int sum = 0, tmp = 1,maxDp=0; void findPar(int x,int tmp, int time) {if (time == maxDp) {sum += tmp;return;}for (int i = 0; i < par[x].size(); i++)findPar(par[x][i],tmp,time+1);} int main() {int n;scanf("%d", &n); for (int i = 1; i arr[i] && dp[j] == maxNum) {par[i].push_back(j);}}}for (in.. 2019. 2. 23.
색종이 더블릿 (업시퀀스) 12345678910111213141516171819202122232425262728293031323334353637383940414243#include #include #include #include using namespace std;vector arr(10005);int dp[10005] = { 0 }; bool compare(const pair& a, const pair& b) { if (a.first == b.first) return a.second 2019. 2. 21.