본문 바로가기

알고리즘/DP89

블록쌓기 더블릿 (업시퀀스) 2019. 2. 21.
줄 세우기 더블릿 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include #include using namespace std; int arr[300] = { 0 };int dp[300] = { 0 };int par[300] = { 0 };int tmp = 0; void findPar(int x) { if (x == 0) return; tmp++; findPar(par[x]);} int main() { int n; scanf("%d", &n); for (int i = 1; i 2019. 2. 21.
up sequence 더블릿 (LIS) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include #include using namespace std; int arr[10005] = { 0 };int dp[10005] = { 0 };int par[10005] = { 0 }; void printPar(int x) { if (x == 0) return; printPar(par[x]); printf("%d ", arr[x]);} int main() { int n; scanf("%d", &n); for (int i = 1; i 2019. 2. 20.
미팅 수 최대 더블릿 1234567891011121314151617181920212223242526272829303132#include #include using namespace std; int dp[1005] = { 0 }; int main() { int n; scanf("%d", &n); int start, end; scanf("%d %d", &start, &end); for (int i = 0; i 2019. 2. 20.
계단 오르기 더블릿 12345678910111213141516171819202122232425#include #include using namespace std; int arr[400] = { 0 };int dp[400] = { 0 }; int main() { int n; scanf("%d", &n); getchar(); for (int i = n; i > 0; i--) { scanf("%d", &arr[i]); } dp[1] = arr[1]; dp[2] = dp[1] + arr[2]; dp[3] = dp[1] + arr[3]; for (int i = 4; i 2019. 2. 19.
점수 인플레이션 더블릿 1234567891011121314151617181920212223242526272829303132333435363738394041#include #include #include using namespace std; int arr[20000] = { 0 };int dp[20000] = { 0 }; int main() { int m, n; scanf("%d %d", &m, &n); getchar(); //시간초과를 막기 위해 입력을 받을때마다 연산 진행 for (int i = 1; i 2019. 2. 19.
정사각형 수 더블릿 12345678910111213141516171819202122232425262728293031323334353637383940#include int dp[300][300] = { 0 };int arr[300][300] = { 0 }; int main() { int n; scanf("%d", &n); //문자열을 받은 뒤, 숫자 배열로 전환 char str[300] = { 0 }; for (int i = 0; i 2019. 2. 18.
주사위 쌓기 더블릿 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677#include #include using namespace std; int maxArr[10000][10] = { 0 };int dp[10000][10] = { 0 }; int main() { int n; scanf("%d", &n); int arr[10] = { 0 }; for (int i = 1; i 2019. 2. 18.
완전순열 더블릿 1234567891011121314#include int dp[1000] = { 0 }; int main() { int n; scanf("%d", &n); dp[2] = 1; for (int i = 3; i 2019. 2. 18.
bits -더블릿 123456789101112131415161718192021222324252627#include typedef long long ll;ll dp[1000][1000] = { 0 }; int main() { int m, n; scanf("%d %d", &m, &n); for (int i = 1; i 2019. 2. 16.
구간 차의 합 최대 - 더블릿 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include #include using namespace std; int arr[200] = { 0 }; // 입력받을 배열int dp[200][200] = { 0 }; // dpint num[200][200] = { 0 }; // 누적 구간 수int cut[200][200]= { 0 }; // 누적 구간 분할 위치 ex) 2 2 3 3int result[100] = { 0 },idx=1; // 누적 구간 인덱스 모음 void sumRan.. 2019. 2. 16.
2662 기업투자 12345678910111213141516171819202122232425262728293031323334353637383940414243#include #include using namespace std; int arr[1000][1000] = { 0 };int dp[1000][1000] = { 0 };int company[1000][1000] = { 0 }; void post(int m, int n) { if (n > 0) { post(m - company[m][n], n - 1); printf("%d ", company[m][n]); } } int main() { int m, n; scanf("%d %d", &m, &n); getchar(); for (int i = 1; i 2019. 2. 16.