求助大佬,递归,40分,TLE

P1002 [NOIP2002 普及组] 过河卒

不好意思,dp打成pd了****
by lianghanrui @ 2023-03-05 15:26:37


```cpp #include <bits/stdc++.h> using namespace std; int i,j; const int maxn=20+5; int judge[maxn][maxn]; long long go[maxn][maxn]= {1}; int main() { memset(go,0,sizeof(go)); memset(judge,0,sizeof(judge)); int n,m,a,b; cin>>n>>m>>a>>b; judge[a][b]=1; judge[a+2][b+1]=1; judge[a+2][b-1]=1; judge[a+1][b+2]=1; judge[a+1][b-2]=1; judge[a-2][b+1]=1; judge[a-2][b-1]=1; judge[a-1][b+2]=1; judge[a-1][b-2]=1; for(i=1; i<=n; i++) if(judge[i][0]==0) go[i][0]=1; else break; for(i=1; i<=m; i++) if(judge[0][i]==0) go[0][i]=1; else break; for(i=1; i<=n; i++) for(j=1; j<=m; j++) if(judge[i][j]==0) go[i][j]=go[i-1][j]+go[i][j-1]; cout<<go[n][m]<<endl; return 0; } ``` 也不用太麻烦,这道题思路还算清晰
by _Adolf_Hitler_ @ 2023-03-05 15:27:10


?????????????????????
by 250250250250cyh @ 2023-03-05 15:28:36


用递推就行,不用上dp大炮(谐音梗,勿吹)
by _Adolf_Hitler_ @ 2023-03-05 15:28:42


@[lianghanrui](/user/704170)
by _Adolf_Hitler_ @ 2023-03-05 15:29:46


这样行吗,之前做的 ```cpp #include <bits/stdc++.h> using namespace std; long long a,b,n,m,x[23][23],ma[23][23]; void work(long long x,long long y){ ma[x][y]=1; ma[x-1][y-2]=1; ma[x-2][y-1]=1; ma[x-2][y+1]=1; ma[x-1][y+2]=1; ma[x+1][y-2]=1; ma[x+2][y-1]=1; ma[x+2][y+1]=1; ma[x+1][y+2]=1; } int main(){ scanf("%lld %lld %lld %lld",&n,&m,&a,&b); a++; b++; n++; m++; work(a,b); x[1][1]=1; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(i==1&&j==1)continue; if(ma[i][j]==0)x[i][j]=x[i-1][j]+x[i][j-1]; } } printf("%lld",x[n][m]); return 0; } ```
by juchenglin @ 2023-03-05 15:49:07


|