#include <iostream>
using namespace std;
int min(int,int);
int main() // 主函数
{
int h[4][3]={ {3,2,3},{2,1,4},{3,4,5},{3,1,2} };
int v[3][4]={ {2,2,3,4},{4,1,2,4},{1,2,2,3} };
int p[4][4]={ {0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0} };
p[0][0]=0;
for(int j=1;j<4;j++) //y轴上的点
p[0][j]=p[0][j-1]+h[0][j-1];
for(int i=1;i<4;i++) //x轴上的点
p[i][0]=p[i-1][0]+v[i-1][0];
for(int i=1;i<4;i++) //内部的点
for(int j=1;j<4;j++)
p[i][j]=min( ( p[i-1][j]+v[i-1][j]),
(p[i][j-1]+h[i][j-1]) );
cout<<"from P to A is "<<p[3][3]<<endl;
//输出每个路口对P点的最小距离
for(int i=3;i>=0;i--)
{ i
; for(int j=0;j<=3;j++)
{
cout<<p[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
int min(int a,int b)
{
if (a<=b ) return a;
else return b;
}