小马过河(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 }
原文地址:https://www.cnblogs.com/qijinbiao/p/2397939.html