全RE,求助!在线等,急!

P1002 [NOIP2002 普及组] 过河卒

dx和dy?
by e4ns @ 2024-01-18 11:58:37


你的数组?范围开大一点
by e4ns @ 2024-01-18 11:59:27


```cpp for(int i=1;i<=8;i++) if(x+dx[i]>=0&&x+dx[i]<=n&&y+dy[i]>=0&&y+dy[i]<=n/*应该是m*/) a[x+dx[i]][y+dy[i]]=0; ```
by danlao @ 2024-01-18 12:02:43


@[drachess](/user/1122851)
by danlao @ 2024-01-18 12:02:59


@[e4ns](/user/846618) 数组织要保证不访问到边界值外界不会报错,`a[21][21]`的区域是`a[i][j]`$\left(0\le i,j \le 20\right)$,题目的数据范围是$1 \le n,m \le 20$
by danlao @ 2024-01-18 12:10:05


@[e4ns](/user/846618) @[drachess](/user/1122851) 不过最好多开$10$及以上,不要卡着开
by danlao @ 2024-01-18 12:11:22


感谢大家!不过,如下仍全RE:```cpp #include<iostream> using namespace std; long long a[31][31]; int dx[]={0,2,1,-1,-2,-2,-1,1,2}; int dy[]={0,1,2,2,1,-1,-2,-2,-1}; int main(){ int n,m,x,y; cin>>n>>m>>x>>y; for(int i=0;i<=n;i++) for(int j=0;j=m;i++) a[i][j]=1; a[x][y]=0; for(int i=1;i<=8;i++) if(x+dx[i]>=0&&x+dx[i]<=n&&y+dy[i]>=0&&y+dy[i]<=m) a[x+dx[i]][y+dy[i]]=0; for(int i=0;i<=n;i++){ for(int j=0;i<=m;j++){ if((i==0&&j==0)||(a[i][j]==0)) continue; if(i==0) a[i][j]=a[i][j-1]; if(j==0) a[i][j]=a[i-1][j]; if(i!=0&&j!=0&&a[i][j]!=0) a[i][j]=a[i-1][j]+a[i][j-1]; } } cout<<a[n][m]; return 0; } ```
by drachess @ 2024-01-19 19:57:17


```cpp #include<iostream> using namespace std; long long a[31][31]; int dx[]={0,2,1,-1,-2,-2,-1,1,2}; int dy[]={0,1,2,2,1,-1,-2,-2,-1}; int main(){ int n,m,x,y; cin>>n>>m>>x>>y; for(int i=0;i<=n;i++) for(int j=0;j=m;i++) a[i][j]=1; a[x][y]=0; for(int i=1;i<=8;i++) if(x+dx[i]>=0&&x+dx[i]<=n&&y+dy[i]>=0&&y+dy[i]<=m) a[x+dx[i]][y+dy[i]]=0; for(int i=0;i<=n;i++){ for(int j=0;i<=m;j++){ if((i==0&&j==0)||(a[i][j]==0)) continue; if(i==0) a[i][j]=a[i][j-1]; if(j==0) a[i][j]=a[i-1][j]; if(i!=0&&j!=0&&a[i][j]!=0) a[i][j]=a[i-1][j]+a[i][j-1]; } } cout<<a[n][m]; return 0; } ``` 对不起,发乱了,是上边那样。
by drachess @ 2024-01-19 19:58:55


|