为什么爆零???

P1002 [NOIP2002 普及组] 过河卒

``` #include<iostream> #include <iomanip> using namespace std; long long map[30][30],w[1010][1010], x[8]={1,2,2,1,-1,-2,-2,-1}, y[8]={2,1,-1,-2,-2,-1,1,2}, xx[2]={0,1}, yy[2]={1,0}, fuck; long long f(long long a,long long b) { if(map[a][b]==-1) return 0; if(a==0||b==0) return w[a][b]; if(a>0) { if(w[a-1][b]==0) w[a-1][b]=f(a-1,b); } if(b>0) { if(w[a][b-1]==0) w[a][b-1]=f(a,b-1); } return w[a-1][b]+w[a][b-1]; } int main() { long long x1,y1,x2,y2; cin>>x1>>y1>>x2>>y2; map[x2][y2]=-1; for(int i=0;i<8;++i) { if(x2+x[i]>=0&&y2+y[i]>=0) map[x2+x[i]][y2+y[i]]=-1; } for(int i=0;i<=y1;i++) { if(map[0][i]==-1) break; w[0][i]=1; } for(int i=0;i<=x1;i++) { if(map[i][0]==-1) break; w[i][0]=1; } cout<<f(x1,y1); return 0; } ```
by drinktowind @ 2023-07-19 16:59:06


先给第一行第一列赋值1 注意,如果有-1,停止
by drinktowind @ 2023-07-19 17:00:47


求关
by drinktowind @ 2023-07-19 17:01:27


@ drinktowind 谢谢
by 大海中的孤帆 @ 2023-07-19 19:31:21


但我不理解我先前的算法问题在哪
by 大海中的孤帆 @ 2023-07-19 19:39:24


为什么就多给边界一个初始化就AC了
by 大海中的孤帆 @ 2023-07-19 19:40:29


|