WA#3#4 求大佬

P1002 [NOIP2002 普及组] 过河卒

f[x+dx[i]][y+dy[i]]=0; x+dx[i]会<0
by plmplmplm @ 2024-03-25 10:01:32


@[plmplmplm](/user/172075) 可我写了```if(x+dx[i]>=0 && y+dy[i]>=0)```的呀?
by jimmy0926 @ 2024-03-27 19:03:20


边界不要全设1,不然会出现例如第一行 1 1 0 1 这种情况,理论应该是 1 1 0 0
by DoingNow @ 2024-03-29 15:23:40


@[DoingNow](/user/1324857) 什么意思?可以举个例子吗?蒟蒻没太听懂 ~~(已关注)~~
by jimmy0926 @ 2024-03-30 16:42:31


``` #include<bits/stdc++.h> using namespace std; int a[21][21]; long long f[21][21]; int n,m,x,y; const int d[9][2]={{0,0},{-1,-2},{-1,2},{1,-2},{1,2},{-2,-1},{-2,1},{2,-1},{2,1}}; void ff(int x,int y){ int xx,yy; memset(a,0,sizeof(a)); for(int i=0;i<9;i++){ xx=x+d[i][0];yy=y+d[i][1]; if(xx>=0&&x<=n&&yy>=0&&yy<=m) a[xx][yy]=1; } return ; } int main(){ cin>>n>>m>>x>>y; ff(x,y); f[0][0]=1; for(int i=1;i<=n;i++){ if(a[i][0]==1)f[i][0]=0; else f[i][0]=f[i-1][0]; } for(int i=1;i<=m;i++){ if(a[0][i]==1)f[0][i]=0; else f[0][i]=f[0][i-1]; } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]==1)f[i][j]=0; else f[i][j]=f[i-1][j]+f[i][j-1]; } } cout<<f[n][m]; } ```
by Ryan2024hcy @ 2024-03-31 10:23:45


@[Ryan2024hcy](/user/1267853) 求**大佬**指教,我错在哪里了?
by jimmy0926 @ 2024-04-02 15:23:30


|