QianYi Ke? 2019-10-19 13:11 采纳率: 100%
浏览 190
已采纳

这是一道本科的编程问题,因为我刚学一年还不大清楚,请问有人愿意解答吗?谢谢

题目要求都在图片里,要求用C++。谢谢

图片说明

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-10-20 07:53
    关注
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    using namespace std;
    
    int* initdkntor(int n, int * brokens, int m)
    {
        int * p = (int *)malloc(sizeof(int) * n);
        memset(p, 0, sizeof(int) * n);
        for (int i = 0; i < m; i++)
        {
            for (int j = brokens[i * 2] - 1; j < brokens[i * 2 + 1]; j++)
                p[j] = 1;
        }
        return p;
    }
    
    int* tryit(int *seed, int n, int a, int b)
    {
        int * p = (int *)malloc(sizeof(int) * n);
        memcpy(p, seed, sizeof(int) * n);
        for (int i = a - 1; i < b; i++) p[i] = 0;
        return p;
    }
    
    int check(int *p, int n)
    {
        for (int i = 0; i < n; i++) if (p[i]) return 1;
        return 0;
    }
    
    int solve(int *seed, int seedcost, int n, int *sp, int spn)
    {
        if (!check(seed, n)) return seedcost;
        if (!spn) return -1;
        int min = -1;
        for (int i = 0; i < spn; i++)
        {
            int * seed1 = tryit(seed, n, sp[i*3], sp[i*3+1]);
            int cost = solve(seed1, seedcost + sp[i*3+2], n, sp + 3 * (i+1), spn - i-1);
            if (cost != -1)
                if (cost < min || min == -1) min = cost;
        }
        return min;
    }
    
    int main()
    {
        int s;
        int n;
        int m;
        cin >> n >> m >> s;
        int * bk = new int[n * 2];
        for (int i = 0; i < n; i++)
            cin >> bk[i*2] >> bk[i*2+1];
        int * sp = new int[m * 3];
        for (int i = 0; i < m; i++)
            cin >> sp[i*3] >> sp[i*3+1] >> sp[i*3+2];
        int * dkntor = initdkntor(s, bk, n);
        int result = solve(dkntor, 0, s, sp, m);
        cout << result << endl;
        return 0;
    }
    

    在线编译通过
    https://ideone.com/195uxV

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 IPQ5018制作烧录固件,boot运行失败(操作系统-linux)(相关搜索:操作系统)(相关搜索:操作系统)
  • ¥20 icefall在librispeech基础上加入个人数据集
  • ¥30 keepalive高可用故障运维配置询问
  • ¥15 求帮助!国家电网内网u盘突然识别不出来了。
  • ¥15 matlab语音变速变调同时实现
  • ¥15 如何用Thoony写ESP32温湿度检测无源蜂鸣器报警代码?
  • ¥20 部件内部的CT图像数据集
  • ¥15 Visual studio调用动态库
  • ¥15 双目摄像头标定后的校准文件
  • ¥15 powerbi矩阵增加度量值后出现对应关系错乱