这道题以前做过,当时是照着课本敲了一遍代码,并不是很理解,现在又重做一遍。。。

 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 }

总算是理解意思了。。

posted on 2013-04-08 21:34  Fann0221  阅读(323)  评论(0编辑  收藏  举报