这道题以前做过,当时是照着课本敲了一遍代码,并不是很理解,现在又重做一遍。。。
1 #include<stdio.h> 2 int dx[]= {0,1,1,-1,-1,2,2,-2,-2}; 3 int dy[]= {0,2,-2,2,-2,1,-1,1,-1}; 4 int main() 5 { 6 int f[21][20]= {0}; 7 int g[21][20]= {0}; 8 int n,m,x,y; 9 int i,j; 10 scanf("%d %d %d %d",&n,&m,&x,&y); 11 g[x][y]=1; 12 for(i=0; i<=8; i++) 13 if(x+dx[i]>=0&&x+dx[i]<=n&&y+dy[i]>=0&&y+dy[i]<=m) 14 g[x+dx[i]][y+dy[i]]=1; 15 for(i=1; i<=n; i++) 16 { 17 if(g[i][0]!=1) f[i][0]=1; 18 else for(; i<=n; i++) 19 f[i][0]=0; 20 } 21 for(j=1; j<=m; j++) 22 { 23 if(g[0][j]!=1) f[0][j]=1; 24 else for(; j<=m; j++) 25 f[0][j]=0; 26 } 27 for(i=1; i<=n; i++) 28 for(j=1; j<=m; j++) 29 { 30 if(g[i][j]==1) f[i][j]=0; 31 else f[i][j]=f[i-1][j]+f[i][j-1]; 32 } 33 printf("%d\n",f[n][m]); 34 return 0; 35 }
总算是理解意思了。。