목록PROGRAMMING (318)
MY MEMO
출처 : http://suhak.tistory.com/77 #include #include using namespace std; /* 만약 ( 괄호가 나오면 반드시 ) 괄호가 나와야 함. ( 이 두 번 나오면 ) 도 반드시 두 번 나와야 함. 쌍을 이루는 것들을 나열하는 모든 경우의 수를 카탈란 수라고 한다. (1) 첫 번째는 2차원 배열에서 한 지점 A에서 B까지 가는 최단경로의 수다. 왜냐하면, A에서 B지점까지 최단경로로 도착하기 위해선 단 두 가지 방향의 쌍으로 이루어진다. 가장 간단히 다음과 같은 배열이 있다. 0 0 B 0 0 0 A 0 0 여기서 A에서 B로 최단경로로 도착하려면, 오른쪽아니면 위쪽 밖에 길이 없다. 그리고 반드시 이 방향은 대칭된다. 그렇기에 카탈란 수에 속한다. (2) n..
#define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int cookies_count; //가장 긴 증가하는 부분 수열 int eatCookie(vector cookies) { int answer = 0; vector DP(cookies_count + 1, 0); for (int j = 0; j cookies[k]) if (Min < DP[k]) Min = DP[k]; } DP[j] = Min + 1; answer = max(DP[j], answer); } return..
#define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int row, colum; vectormap(1001, vector(1001, 0)); vectorcache(1001, vector(1001, -1)); int DP(int x, int y) { if (x == row - 1 && y == colum - 1) return map[x][y]; int &ret = cache[x][y]; if (ret != -1) return ret; int num1 = 0, num2 = 0, num3 = 0; if (x + 1 < row) num1 = DP(x + 1, y); if (y + 1 < colum) num2 = DP(x,..
#define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; vector DP; //0을 만나면 1개 9를 만나면 1개 //나머지는 2개 long long go_step(int start_num, int count) { if (start_num 9 || count
#define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; //vector sticker(2, vector(100010)); //vector DP(2, vector(100010)); int main() { int for_count, sticker_count; scanf("%d", &for_count); for (int i = 0; i < for_count; i++) { scanf("%d", &sticker_count); vector sticker(2, vector(100010,0)); vector DP(2, vector(100010,0)); for (int k = 0; k < 2; k++) for (int n = 2; n..
#define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; //long long!! int main() { int n,index; scanf("%d", &n); vectorDP(101, 0); DP[1] = 1; DP[2] = 1; DP[3] = 1; for (int j = 4; j
#include #include using namespace std; int main() { int for_count,num; cin >> for_count; for (int j = 0; j > num; cout
#define _CRT_SECURE_NO_WARNINGS #include #include #include #define MAX 99999999 using namespace std; int main() { int n, goal; scanf("%d %d", &n, &goal); vectornumber(n), DP(100001, MAX); for (int j = 0; j < n; j++) scanf("%d", &number[j]); sort(number.begin(), number.end()); for (int j = 0; j < n; j++) { DP[number[j]] = 1; for (int k = number[j] + 1; k
#define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; //전역 vectorcoin(100), result(10001, 0); int main() { int coin_count, total_coin; scanf("%d %d", &coin_count, &total_coin); for (int j = 0; j < coin_count; j++) scanf("%d", &coin[j]); sort(coin.begin(), coin.begin() + coin_count); for (int j = 0; j < coin_count; j++) { result[coin[j]]++; for (int k = 1; coin[j] + k