azazinco 2019-10-27 07:54 采纳率: 0%
浏览 176
已结题

给n个开区间,选择尽量多的区间,使得两两不交。

这个代码为什么会超出时间限制?
输入:
11
3 5
1 4
12 14
8 12
0 6
8 11
6 10
5 7
3 8
5 9
2 13

#include <iostream>
using namespace std;
int n, begin9[1001], end9[1001];
void init()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> begin9[i] >> end9[i];
}
void qsort(int x, int y)
{
    int i, j, mid, t;
    i = x; j = y; mid = end9[(x + y) / 2];
    while (i <= j) {
        while (end9[i] < mid)
            i++;
        while (end9[j] > mid)
            j--;
    }
    if (i <= j) {
        t = end9[j];
        end9[j] = end9[i];
        end9[i] = t;
        t = begin9[j];
        end9[j] = end9[i];
        end9[i] = t;
        i++;
        j--;
    }
    if (x < j)
        qsort(x, j);
    if (i < y)
        qsort(i, y);
}
void solve()
{
    int ans = 0;
    for (int i = 1, t = -1; i <= n; i++)
        if (begin9[i] >= t) {
            ans++;
            t = end9[i];
        }
    cout << ans << endl;
}
int main()
{
    init();
    qsort(1, n);
    solve();
    return 0;
}

展开全部

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-10-27 14:50
    关注
    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部