weixin_41429120 2021-08-08 16:11 采纳率: 34.6%
浏览 265
已结题

请教这个C++问题,C++算法的问题

  1. C++的问题

  2. C++算法的问题

  3. C++的问题 见图片

  4. C++算法的问题

  5. C++算法的问题
    img

  6. img

img

  • 写回答

3条回答 默认 最新

  • soar3033 2021-08-08 20:30
    关注

    img

    
    // ConsoleApplication13.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //
    
    #include <iostream>
    #include <malloc.h>
    
    using namespace std;
    
    int main()
    {
        int n = 0, m = 0;
        int min = 1;
        int count = 0;
        int loc,len,flag,flag2;
        cin >> n;
        cin >> m;
        int* l =new int[n];
        int* r = new int[n];
        int* pos = new int[n+2];
        for (int i = 0; i < n+2; i++)
        {
            *(pos+i) = 0;
        }
        for (int i = 0; i < n; i++)
        {
             cin >> *(l+i);
             cin >> *(r+i);
             for (int j = *(l+i); j <= *(r+i); j++)
             {
                 *(pos+j) = 1;
             }
        }
        *(pos+0) = 1;
        *(pos+n + 1) = 1;
        while (true)
        {
            flag = 1;
            flag2 = 1;
            len = 0;
            loc = 0;
            for (int i = 0; i < n; i++)
            {
                if (*(pos+*(l+i)-1) == 0 && *(pos+*(r+i)+1)  == 0)
                {
                    l[i]--;
                    r[i]++;
                    pos[l[i]] = 1;
                    pos[r[i]] = 1;
                    count++;
                    flag = 0;
                    flag2 = 0;
                    break;
                }
                else if (*(pos + *(l + i) - 1) == 0 || *(pos + *(r + i) + 1) == 0)
                {
                    if (*(r+i)-*(l+i)>len)
                    {
                        loc = i;
                        len = *(r+i) - *(l+i);
                    }
                    flag2 = 0;
                }
            }
            if (flag)
            {
                (*(l+loc))--;
                (*(r+loc))++;
                count++;
                *(pos+*(l+loc)) = 1;
                *(pos+*(r+loc)) = 1;
            }
            if (flag2)
            {
                break;
            }
        }
        cout << count;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月20日
  • 已采纳回答 8月12日
  • 创建了问题 8月8日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址