非常容易的dp,状态设计和转移都非常明显
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main(){
int n, k, num[50][50], dp[50][50];
while(~scanf("%d%d", &n, &k)){
int i, j, res = 1000000, l;
memset(dp, 0, sizeof(dp));
for(i = 0;i < n;i++)
for(j = 0;j < k;j++)
scanf("%d", &num[i][j]);
for(i = 1;i < n;i++)
for(j = 0;j < k;j++){
dp[i][j] = 12345678;
for(l = 0;l < k;l++)
dp[i][j] = min(dp[i][j], dp[i - 1][l] + abs(num[i - 1][l] - num[i][j]));
}
for(i = 0;i < k;i++)
res = min(res, dp[n - 1][i]);
printf("%d\n", res);
}
return 0;
}