问题标题: 酷町堂:excellent !1085 成功10分

0
0
已解决
徐润扬
徐润扬
高级守护
高级守护

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int a[100],b[200000];
int main() {
     int n,k,cnt=0,sum=0;
     cin>>n>>k;
     for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++){
        b[cnt++]=a[i]-a[i-1];
    }
    sort(b+1,b+1+cnt);
    for(int i=1;i<=k+1;i++){
        sum+=b[i];
    }
    cout<<sum;
}


0
已采纳
王子健
王子健
初级天翼
初级天翼

此题比我刚刚回答的你们的作业简单多了

只有一步关键的

code如下:

定义n, m, k, s, a数组, b数组,其中k=0,s=1,a数组和b数组大小自己揣摩

输入n,m和a数组

从小往大sort排序

for循环用b数组计算:b[i] = a[i+1] - a[i];(算是一个简单的递推式了)

再对b数组排序,注意注意,这次的sort是这样的sort(b+1, b+n);也就是说少了一个排序

最后再遍历b数组,k+=b[i]

输出k即可

0
蔡奕辰
蔡奕辰
高级守护
高级守护

循环(int i=1;i<=n;i++){
        输入>>a[i];
    }
    排序(a+1,a+n+1);
    循环(int i=1;i<n;i++){
        b[i]=a[i+1]-a[i];
    }
    排序(b+1,b+n);
    循环(int i=1;i<=k;i++){
        计数器+=b[i];
    }
    输出<<计数器;

蔡奕辰在2020-08-27 17:40:12追加了内容

看在同班的情况下,采纳呗

0
0
我要回答