I just made a mistake while participating in a coding contest in Vietnam and I came across a simple dp problem, the problem was: https://lqdoj.edu.vn/problem/dutpc2a : test of the contest organizers that I participated in, https://atcoder.jp/contests/dp/tasks/dp_h: The problem I encountered is the same as the one on atcoder
But I accepted this problem on atcoder but when I submitted the test from the contest organizer that I joined, I was wrong. And the problem I have is when I compare with the character '.' I got wrong but compare with '#' then accepted. Can someone explain to me why when I compare the character '.' wrong?
I think there are a few caveats when compared to the '.' and some other special characters, if my thinking is correct, someone can explain it to me.
this my code wrong:
char v[nax][nax]; int dp[nax][nax];
int32_t main() {
FASTIO int n, m; cin >> n >> m; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> v[i][j]; } } for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { if (i == 1 && j == 1) { dp[i][j]=1; } else if (v[i][j] == '.') { dp[i][j] = (dp[i - 1][j] + dp[i][j - 1]) % mod; } } } cout << dp[n][m]; return 0;
}
and my code accepted:
char v[nax][nax]; int dp[nax][nax];
int32_t main() {
FASTIO int n, m; cin >> n >> m; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> v[i][j]; } } for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { if (i == 1 && j == 1) { dp[i][j]=1; } else { if (v[i][j] != '#') { dp[i][j] = (dp[i - 1][j] + dp[i][j - 1]) % mod; } } } } cout << dp[n][m]; return 0;
}
Thanks for the help and sorry for my english!