状态转移方程 dp[k][i]=dp[k-1][j]+abs(a[k][i]-a[k-1][j]);
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn=101;
int dp[maxn][maxn],a[maxn][maxn];
int n,m,ans;
int main(){
while(cin>>n>>m){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
memset(dp,0x3f3f3f3f,sizeof(dp));
for(int i=1;i<=m;i++)dp[1][i]=0;
for(int k=2;k<=n;k++){
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
if(dp[k][i]>dp[k-1][j]+abs(a[k][i]-a[k-1][j]))
dp[k][i]=dp[k-1][j]+abs(a[k][i]-a[k-1][j]);
}
}
}
ans=0x3f3f3f3f;
for(int i=1;i<=m;i++){
ans=min(ans,dp[n][i]);
}
cout<<ans<<endl;
}
return 0;
}