VioletaBabel

체스판 위의 길 (실패) 본문

알고리즘문제들/codeground
체스판 위의 길 (실패)
Beabletoet 2017. 6. 17. 00:30

#include<cstdio>

using namespace std;

int main(void)

{

int T, test_case, n, m, k, **chess;

setbuf(stdout, NULL);

scanf("%d", &T);

for (test_case = 0; test_case < T; test_case++)

{

scanf("%d %d %d", &n, &m, &k);

chess = new int*[n + 1];

for (int i = 0; i < n + 1; ++i)

chess[i] = new int[m + 1];

for (int i = 1; i <= n; ++i)

for (int j = 1; j <= m; ++j)

chess[i][j] = 0;

for (int i = 0, x, y; i < k; ++i, chess[x][y] = -1)

scanf("%d %d", &x, &y);

for (int i = 1, a = 1; i <= n; ++i)

{

if (chess[i][1] == -1)

a = -1;

chess[i][1] = a;

}

for (int i = 2, a = 1; i <= m; ++i)

{

if (chess[1][i] == -1)

a = -1;

chess[1][i] = a;

}

for(int i = 2; i <= n; ++i)

for (int j = 2; j <= m; ++j)

{

if (chess[i][j] == -1)

continue;

chess[i][j] = chess[i - 1][j] + chess[i][j - 1];

if (chess[i - 1][j] == -1 && chess[i][j - 1] == -1)

chess[i][j] = -1;

else if (chess[i - 1][j] == -1 || chess[i][j - 1] == -1)

chess[i][j] = (chess[i - 1][j] > chess[i][j - 1]) ? chess[i - 1][j] : chess[i][j - 1];

chess[i][j] %= 1000000007;

}

printf("Case #%d\n%d\n", test_case + 1, chess[n][m]);

for (int i = 0; i < n + 1; ++i)

delete[] chess[i];

delete[] chess;

}

return 0;

}


============이건 메모리초과 날만한듯..

'알고리즘문제들 > codeground' 카테고리의 다른 글

태준이의 걱정  (0) 2017.06.28
개구리 뛰기  (0) 2017.06.17
화학자의 문장 (99점)  (0) 2017.06.16
블럭 없애기 (실패)  (0) 2017.06.16
미궁 속의 방  (0) 2017.06.16
Comments