小马过河(bupt 311)

 1 #include<stdio.h>
2 #define min(a,b) (a<b? a:b)
3 int map[1005][1005];
4 int main()
5 {
6 int m,n,i,j,ans;
7 while(scanf("%d%d",&n,&m)&&(n||m))
8 {
9 for(i=0;i<n;i++) {map[i][0]=1000005;map[i][m+1]=1000005;}
10 for(i=0;i<n;i++)
11 {
12 for(j=1;j<=m;j++)
13 scanf("%d",&map[i][j]);
14 }
15 for(i=1;i<n;i++)
16 {
17 for(j=1;j<=m;j++)
18 {
19 map[i][j]=min(min(map[i-1][j],map[i-1][j-1]),map[i-1][j+1])+map[i][j];
20 }
21 }
22 ans=1000005;
23 for(j=1;j<=m;j++) ans=min(ans,map[n-1][j]);
24 printf("%d\n",ans);
25 }
26 return 0;
27 }

 

posted @ 2012-03-15 13:41  qijinbiao1  阅读(231)  评论(0编辑  收藏  举报