MY MEMO
[BAEKJOON] 10164 격자상의 경로 본문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <vector> using namespace std; int row, col; vector<vector< int >>DP(16, vector< int >(16, -1)); int find_way( int x, int y, int end_x, int end_y) { int &ret = DP[x][y]; if (ret != -1) return ret; if (x == end_x && y == end_y) return 1; int num1 = 0, num2 = 0; if (x + 1 <= end_x) num1 = find_way(x + 1, y, end_x, end_y); if (y + 1 <= end_y) num2 = find_way(x, y + 1, end_x, end_y); return ret = num1 + num2; } int main() { int chk, chk_x, chk_y, y; scanf ( "%d %d %d" , &col, &row, &chk); if (chk == 0) { printf ( "%d" , find_way(0, 0, col - 1, row - 1)); return 0; } else { for (y = 1; y <= col; y++) { if (row*y >= chk) { chk_x = y - 1; break ; } } chk_y = chk - row*chk_x - 1; printf ( "%d" , find_way(0, 0, chk_x, chk_y)*find_way(chk_x, chk_y, col - 1, row - 1)); } return 0; } |
'ALGORITHM > BAEKJOON' 카테고리의 다른 글
[BAEKJOON] 2302 극장 좌석 (0) | 2017.10.03 |
---|---|
[BAEKJOON] 2631 줄세우기 (0) | 2017.10.01 |
[BAEKJOON] 10942 팰린드롬? (0) | 2017.10.01 |
[BAEKJOON] 9507 Generations of Tribbles (0) | 2017.10.01 |
[BAEKJOON] 1904 01타일 (0) | 2017.10.01 |