7-4 sdut-C语言实验-区间覆盖问题

简介: 7-4 sdut-C语言实验-区间覆盖问题

7-4 sdut-C语言实验-区间覆盖问题


分数 20


全屏浏览


切换布局


作者 马新娟


单位 山东理工大学


用i来表示x坐标轴上坐标为[i-1,i]的长度为1的区间,并给出n个不同的整数,表示n个这样的区间。


现在要求画m条线段覆盖住所有的区间,


条件是:每条线段可以任意长,但是要求所画线段的长度之和最小,


并且线段的数目不超过m。


###输入格式:

输入包括多组数据,每组数据的第一行表示区间个数n(1≤n≤200) 和所需线段数m(1≤m≤50),第二行表示n个点的坐标i(1≤i≤200)。


###输出格式:

每组输出占一行,输出m条线段的最小长度和。


###输入样例:

1. 5 3
2. 1 3 8 5 11


###输出样例:

7


代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB


#include<stdio.h>
void sort(int *a, int n, int f) {
    int t;
    if (f) {
        for ( int i = 0; i < n - 1; i++) {
            for ( int j = 0; j < n - i - 1; j++) {
                if ( a[j] > a[j+1] ) {
                    t = a[j];
                    a[j] = a[j+1];
                    a[j+1] = t;
                }
            }
        }
    }
    else {
        for ( int i = 0; i < n - 1; i++) {
            for ( int j = 0; j < n - i - 1; j++) {
                if ( a[j] < a[j+1] ) {
                    t = a[j];
                    a[j] = a[j+1];
                    a[j+1] = t;
                }
            }
        }
    }
}
int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    int a[201], b[201];
    for ( int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    if ( n <= m )
        printf("%d\n", n);
    else {
        sort(a, n, 1);
        for ( int i = 0; i < n - 1; i++)
            b[i] = a[i+1] - a[i] - 1;
        sort(b, n - 1, 0);
        int ans = a[n-1] - a[0] + 1;
        for ( int i = 0; i < m - 1; i++)
            ans -= b[i];
        printf("%d\n", ans);//max
    }
    return 0;
}
目录
相关文章
|
4月前
7-2 sdut-C语言实验-删数问题(贪心法二)
7-2 sdut-C语言实验-删数问题(贪心法二)
36 2
|
4月前
|
BI
7-7 sdut-C语言实验-上升子序列
7-7 sdut-C语言实验-上升子序列
26 0
|
4月前
7-5 sdut-C语言实验-最少拦截系统
7-5 sdut-C语言实验-最少拦截系统
32 6
|
4月前
|
算法
7-2 sdut-C语言实验-数字三角形问题
7-2 sdut-C语言实验-数字三角形问题
25 1
|
4月前
7-10 sdut-C语言实验-走迷宫
7-10 sdut-C语言实验-走迷宫
28 2
|
4月前
|
机器学习/深度学习 安全
7-3 sdut-C语言实验-小鑫去爬山
7-3 sdut-C语言实验-小鑫去爬山
30 2
|
4月前
7-2 sdut-C语言实验-删数问题
7-2 sdut-C语言实验-删数问题
26 2
|
4月前
7-6 sdut-C语言实验-爬楼梯
7-6 sdut-C语言实验-爬楼梯
22 0
|
4月前
7-8 sdut-C语言实验-全排列问题
7-8 sdut-C语言实验-全排列问题
35 0
|
4月前
7-2 sdut-C语言实验-汉诺塔
7-2 sdut-C语言实验-汉诺塔
30 0