1 条题解

  • 0
    @ 2025-10-10 20:13:36

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 1e3 + 10;
    int n,m;
    int a[N],f[N][N];
     
    int main(){
    	cin>>n>>m;
    	for(int i = 1;i <= n;i++){
    		scanf("%d",&a[i]);
    	}
    	for(int i = 1;i <= n;i++){
    		for(int j = 1;j <= n;j++){
    			f[i][j] = 1e9;
    		}
    	}
    	
    	int ans = 1e9;
    	for(int i = 1;i <= n;i++){
    		for(int j = 1;j <= min(i,m);j++){
    			if(j == 1){
    				f[i][j] = 0;
    				continue;
    			}
    			for(int k = j-1;k < i;k++){
    				f[i][j] = min(f[i][j],f[k][j-1]+abs(a[k]-a[i]));
    			}
    			
    			if(j == m) ans = min(ans,f[i][j]);
    		}
    	}
    	
    //	for(int i = 1;i <= n;i++){
    //		for(int j = 1;j <= m;j++){
    //			cout<<f[i][j]<<" ";
    //		}
    //		cout<<endl;
    //	}
    	
    	cout<<ans;
    	return 0;
    }
    
    
    • 1

    信息

    ID
    1104
    时间
    1000ms
    内存
    512MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者