这哪错了,只有40分。请各位dalao求助!!!//P1002 过河卒

灌水区

看不懂 根本看不懂
by Zhengyunshu @ 2024-04-27 20:59:23


你为什么不用深搜?
by lizhaixiang @ 2024-04-28 14:23:58


@[liangsefengjing](/user/1125914) 建议发到题目总版 还有你可以看看我的代码: ```cpp #include<iostream> using namespace std; long f[22][22]={};//记录答案 int ctrl[22][22]={},n,m,hx,hy;//ctrl 记录马的控制点 int d[9][2]={{0,0},{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};//马的控制点 int main(){ cin>>n>>m>>hx>>hy; for(int c=0;c<9;c++){ int tmpx=hx+d[c][0],tmpy=hy+d[c][1]; if(0<=tmpx&&tmpx<=n&&0<=tmpy&&tmpy<=m){ ctrl[tmpx][tmpy]=1; } }f[0][0]=1-ctrl[0][0]; for(int c=0;c<=n;c++){ for(int _c=0;_c<=m;_c++){ if(ctrl[c][_c])continue; if(c!=0)f[c][_c]+=f[c-1][_c]; if(_c!=0)f[c][_c]+=f[c][_c-1]; } }cout<<f[n][m]; } ```
by xd244 @ 2024-04-28 21:37:47


我也有``` #include<iostream> using namespace std; const int fx[9]={0,-2,-1,1,2,2,1,-1,-2}; const int fy[9]={0,1,2,2,1,-1,-2,-2,-1}; int main() { long long n,m,x,y; cin>>n>>m>>x>>y; long long v[n+1][m+1]; for(int i=0;i<=n;++i)//初始化棋盘 for(int j=0;j<=m;++j) v[i][j]=1; for(int i=0;i<=8;++i)//标记马及其控制点 if(fx[i]+x>=0 && fy[i]+y>=0 && fx[i]+x<=n && fy[i]+y<=m) v[fx[i]+x][fy[i]+y]=0; for(int i=0;i<=n;++i)//递推遍历棋盘 for(int j=0;j<=m;++j) { if((i==0 && j==0)||v[i][j]==0) continue; if(i==0) v[i][j]=v[i][j-1]; else if(j==0) v[i][j]=v[i-1][j]; else v[i][j]=v[i-1][j]+v[i][j-1]; } cout<<v[n][m]; return 0; } ```
by CDW20110412 @ 2024-04-30 17:46:04


|