为什么0分

P1002 [NOIP2002 普及组] 过河卒

```cpp #include<bits/stdc++.h> using namespace std; long long int a[25][25]={0}; int f[25][25]={0}; int b[8][2]={{-1,-2},{-1,2},{-2,-1},{2,-1},{-2,1},{1,-2},{2,1},{1,2}}; int main() { // int n,m,x,y; cin>>n>>m>>x>>y; for(int i=0;i<8;i++) { int xx=x+b[i][0]; int yy=y+b[i][1]; if(xx<0||xx>n||yy<0||yy>m) continue; f[xx][yy]=1; } f[x][y]=1; a[0][0]=1; for(int i=1;i<=n;i++) { if(f[i][0]==0) { a[i][0]=a[i-1][0]; } } for(int i=1;i<=m;i++) { if(f[0][i]==0) { a[0][i]=a[0][i-1]; } } for(int i=1;i<=n;i++) { for(int h=1;h<=m;h++) { if(f[i][h]==0) a[i][h]=a[i-1][h]+a[i][h-1]; else a[i][h]=0; } } cout<<a[n][m]; // } ```
by jinitaimai33333 @ 2023-06-19 21:14:57


``` #include<bits/stdc++.h> using namespace std; long long n,m,xm,ym,a[1001][1001],ans,f[1001][1001],vis[1001][1001]; int dfs(int x,int y) { if(vis[x][y]){ return f[x][y]; } if(a[x][y]) { return 0; } if(x>n||y>m) { return 0; } if(x==n&&y==m) { return 1; } f[x][y]=dfs(x+1,y)+dfs(x,y+1); vis[x][y]=1; return f[x][y]; } int main() { cin>>n>>m>>xm>>ym; if(xm>=0&&ym>=0&&xm<=n&&ym<=n) { a[xm][ym]=1; } if(xm+1>=0&&ym+2>=0&&xm+1<=n&&ym+2<=n) { a[xm+1][ym+2]=1; } if(xm+2>=0&&ym+1>=0&&xm+2<=n&&ym+1<=n) { a[xm+2][ym+1]=1; } if(xm-1>=0&&ym+2>=0&&xm-1<=n&&ym+2<=n) { a[xm-1][ym+2]=1; } if(xm+2>=0&&ym-1>=0&&xm+2<=n&&ym-1<=n) { a[xm+2][ym-1]=1; } if(xm+1>=0&&ym-2>=0&&xm+1<=n&&ym-2<=n) { a[xm+1][ym-2]=1; } if(xm-2>=0&&ym+1>=0&&xm-2<=n&&ym+1<=n) { a[xm-2][ym+1]=1; } if(xm-1>=0&&ym-2>=0&&xm-1<=n&&ym-2<=n) { a[xm-1][ym-2]=1; } if(xm-2>=0&&ym-1>=0&&xm-2<=n&&ym-1<=n) { a[xm-2][ym-1]=1; } cout<<dfs(0,0); return 0; } ```
by Error_303 @ 2023-06-22 14:56:53


|