0分求助

P1002 [NOIP2002 普及组] 过河卒

ps:样例输出72
by ordoki @ 2023-03-25 12:22:47


不对
by chenjunhao_ @ 2023-03-27 21:24:34


首先12行 ```cpp P[i].y=C.y+y[i]; ```
by hecc @ 2023-03-30 16:04:31


其次 你需要判断马可以跳的点有没有出边界
by hecc @ 2023-03-30 16:06:46


然后 卒的终点是右下角 , 所以答案是ans[n][m];
by hecc @ 2023-03-30 16:08:23


再说了 你的循环应该是 ```cpp for (int i=0;i<=n;i++) for (int j=0;j<=m;j++) ```
by hecc @ 2023-03-30 16:09:36


最后 送上我的代码 ```cpp #include<iostream> #include <algorithm> using namespace std; long long t[102][102],dp[102][102],n,m,mx,my,ma; int k(int x){ if(x<0){ return 100; } return x; } int main() { cin>>n>>m>>mx>>my; t[mx][my]=t[k(mx-1)][k(my+2)]=1; t[k(mx-2)][k(my+1)]=t[k(mx-1)][k(my-2)]=t[k(mx-2)][k(my-1)]=1; t[k(mx+1)][k(my+2)]=t[k(mx+2)][k(my+1)]=1; t[k(mx+1)][k(my-2)]=t[k(mx+2)][k(my-1)]=1; dp[0][0]=1; for (int i=0;i<=n;i++) for (int j=0;j<=m;j++) { if(t[i][j]==0&&i<=n&&j<=m) dp[i][j]=max(dp[i][j],dp[i-1][j]+dp[i][j-1]); } cout<<dp[n][m]; return 0; } ```
by hecc @ 2023-03-30 16:10:47


~~祝我省选rp++~~
by hecc @ 2023-03-30 16:11:12


|