#include <bits/stdc++.h>
#define MAX 1000000000000000000
#define int long long
using namespace std;
int a[5005];
int dp[5005][5005];
signed main(){
int n;
cin>>n;
cout<<0<<" ";
if (n==1) return 0;
int ans=MAX;
for (int i=1;i<=n;i++){
cin>>a[i];
dp[i-1][i]=abs(a[i-1]-a[i]);
ans=min(ans,dp[i-1][i]);
}
cout<<ans<<" ";
for (int l=3;l<=n;l++){
ans=MAX;
for (int i=1;i<=n-l+1;i++){
int j=i+l-1;
dp[i][j]=dp[i+1][j-1]+abs(a[i]-a[j]);
ans=min(ans,dp[i][j]);
}
cout<<ans<<" ";
}
}
把前面的一些特判去了直接 l 从1开始就没事了?