60分,第三个和第四个是错的,求解。

P1002 [NOIP2002 普及组] 过河卒

希望更丰富的展现?使用Markdown
by wzw_ @ 2018-12-10 13:49:58


# 希望更丰富的展现? [使用Markdown](https://www.luogu.org/wiki/show?name=%E5%B8%AE%E5%8A%A9%EF%BC%9Amarkdown)
by NKL丶 @ 2018-12-10 14:15:10


# 算了帮帮你 ```cpp #include <iostream> #include <cstdio> using namespace std; long long n = 0, m = 0; long long shuzhu[23][23] = { 0 }; long long visit[23][23] = { 0 }; void dfs() { for (long long j = 1; j <= m; j++) { visit[0][j] = 1; if (shuzhu[0][j]) { visit[0][j] = 0; } } for (long long i = 1; i <= n; i++) { visit[i][0] = 1; if (shuzhu[i][0]) { visit[i][0] = 0; } } for (long long i = 1; i <= n; i++) { for (long long j = 1; j <= m; j++) { visit[i][j] = visit[i - 1][j] + visit[i][j - 1]; if (shuzhu[i][j]) { visit[i][j] = 0; } } } } int main() { long long mx = 0, my = 0; cin >> n >> m >> mx >> my; shuzhu[mx][my] = 1; if(mx-1>=0&&my-2>=0) shuzhu[mx - 1][my - 2] = 1; if(mx-2>=0&&my-1>=0) shuzhu[mx - 2][my - 1] = 1; if(mx+1>=0&&my-2>=0) shuzhu[mx + 1][my - 2] = 1; if(mx+2>=0&&my-1>=0) shuzhu[mx + 2][my - 1] = 1; if(mx-1>=0&&my+2>=0) shuzhu[mx - 1][my + 2] = 1; if(mx-2>=0&&my+1>=0) shuzhu[mx - 2][my + 1] = 1; if(mx+1>=0&&my+2>=0) shuzhu[mx + 1][my + 2] = 1; if(mx+2>=0&&my+1>=0) shuzhu[mx + 2][my + 1] = 1; dfs(); cout << visit[n][m] << endl; return 0; } ```
by NKL丶 @ 2018-12-10 14:17:54


同样,第三个和第四个错误。后来索性直接把别人号称正确的答案直接贴进去评测,也是错误! 不会是测试数据有误吧!
by mcload @ 2018-12-15 20:08:08


知道原因了,第3、4测试点错误,当陷阱在0行或0列时没有考虑清楚。
by mcload @ 2018-12-16 09:33:43


|