大佬求调

P1002 [NOIP2002 普及组] 过河卒

```cpp #include<bits/stdc++.h> using namespace std; bool a[25][25]; long long f[25][25]; int n,m,x,y; int main() { f[1][1]=1; cin>>n>>m>>x>>y; n++; m++; x++; y++; a[x][y]=1; a[x-2][y-1]=1; a[x-2][y+1]=1; a[x+2][y-1]=1; a[x+2][y+1]=1; a[x-1][y+2]=1; a[x-1][y-2]=1; a[x+1][y+2]=1; a[x+1][y-2]=1; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)if((i!=1||j!=1)&&!a[i][j]) f[i][j]=f[i-1][j]+f[i][j-1]; cout<<f[n][m]; return 0; } ```
by keep_shining @ 2024-04-01 15:25:05


@[caochenkai](/user/1208635) ~~帮忙at一下~~
by FXLIR @ 2024-04-01 15:47:46


``` #include<iostream> using namespace std; struct point{ int x,y; }; unsigned long long k[22][22]; point a[36]; int dx[9]={0,1,-1,1,-1,2,-2,2,-2}; int dy[9]={0,2,-2,-2,2,1,-1,-1,1}; int posx,posy,hposx,hposy; void dfspoints(int hx,int hy){ a[0].x=hx;a[0].y=hy; for(int i=1;i<=8;i++) { a[i].x=hx+dx[i]; a[i].y=hy+dy[i]; } } unsigned long long dfs(int px,int py){ if(k[px][py]>0) return k[px][py]; if(py>posy||px>posx) return 0; for(int i=0;i<=8;i++) if(a[i].x==px&&a[i].y==py) return 0; if(px==posx&&py==posy) return 1; k[px][py]=dfs(px+1,py)+dfs(px,py+1); return k[px][py]; } int main(){ cin>>posx>>posy>>hposx>>hposy; dfspoints(hposx,hposy); cout<<dfs(0,0); } ```
by zhangyining2357 @ 2024-04-14 19:23:52


|