哪位大佬帮忙看看,全WA了

P1002 [NOIP2002 普及组] 过河卒

测试案例过了没?
by miku_Silent @ 2021-10-17 13:27:53


正解 ```cpp #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define ll long long using namespace std; const int fx[] = {0, -2, -1, 1, 2, 2, 1, -1, -2}; const int fy[] = {0, 1, 2, 2, 1, -1, -2, -2, -1}; //马可以走到的位置 int bx, by, mx, my; ll f[40][40]; bool s[40][40]; //判断这个点有没有马拦住 int main(){ scanf("%d%d%d%d", &bx, &by, &mx, &my); bx += 2; by += 2; mx += 2; my += 2; //坐标+2以防越界 f[2][1] = 1;//初始化 s[mx][my] = 1;//标记马的位置 for(int i = 1; i <= 8; i++) s[mx + fx[i]][my + fy[i]] = 1; for(int i = 2; i <= bx; i++){ for(int j = 2; j <= by; j++){ if(s[i][j]) continue; // 如果被马拦住就直接跳过 f[i][j] = f[i - 1][j] + f[i][j - 1]; //状态转移方程 } } printf("%lld\n", f[bx][by]); return 0; }
by Master2021 @ 2021-10-17 15:30:13


加我的团队!
by Master2021 @ 2021-10-17 16:10:12


@[miku_Silent](/user/302945) 没
by shiyuke @ 2021-10-17 16:24:17


@[Master2021](/user/580597) 谢谢
by shiyuke @ 2021-10-17 16:25:45


@[shiyuke20091124](/user/575518) 兄弟没你就调呀,正解: ```cpp #include<iostream> using namespace std; int n, m, cx, cy; long long f[40][40], g[40][40]; int main() { cin>>n>>m>>cx>>cy; f[0][0]=1; g[cx][cy]=1; if(cx-1>=0&&cy-2>=0)g[cx-1][cy-2]=1; if(cx+1<=n&&cy-2>=0)g[cx+1][cy-2]=1; if(cx-2>=0&&cy-1>=0)g[cx-2][cy-1]=1; if(cx+2<=n&&cy-1>=0)g[cx+2][cy-1]=1; if(cx-2>=0&&cy+1<=m)g[cx-2][cy+1]=1; if(cx+2<=n&&cy+1<=m)g[cx+2][cy+1]=1; if(cx-1>=0&&cy+2<=m)g[cx-1][cy+2]=1; if(cx+1<=n&&cy+2<=m)g[cx+1][cy+2]=1; for(int i=1; i<=n; i++) if(!g[i][0])f[i][0]=f[i-1][0]; for(int j=1; j<=m; j++) if(!g[0][j])f[0][j]=f[0][j-1]; for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) { if(g[i][j])f[i][j]=0; if(!g[i][j])f[i][j]=f[i][j-1]+f[i-1][j]; } cout<<f[n][m]; return 0; } ```
by miku_Silent @ 2021-10-17 16:28:56


@[miku_Silent](/user/302945) 感谢感谢,这道题我想了一上午都没想出来
by shiyuke @ 2021-10-17 17:10:55


@[shiyuke20091124](/user/575518) 应该的
by miku_Silent @ 2021-10-18 21:27:22


不会吧!
by Master2021 @ 2021-10-19 12:47:22


是的
by shiyuke @ 2021-10-22 17:20:28


|