全部评论 2

  • #include <bits/stdc++.h>
    using namespace std;
    struct prog
    {
    int s;
    int e;
    }a[1000005];
    bool cmp(prog aa,prog bb)
    {
    return aa.e<bb.e;
    }
    int n;
    int main()
    {
    int t;
    cin>>t;
    while(t--)
    {
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i].s>>a[i].e;
    sort(a+1,a+n+1,cmp);
    int cnt=1;
    int ans=a[1].e;
    for(int i=2;i<=n;i++)
    {
    if(ans<a[i].s)
    {
    cnt++;
    ans=a[i].e;
    }
    }
    cout<<cnt<<endl;
    }
    }

    1周前 来自 浙江

    0
  • GPT:
    根据您提供的代码,发现有以下问题:
    在第二个循环中,没有必要为剩余的活动手动赋初值为 0。因为在输入时只会输入 n 个活动,后面没有输入的活动不需要处理,也不会对程序产生影响。
    程序逻辑有误。在第二个循环中,应该使用 j<n 的条件进行循环,而不是 j<n+1。此外,在 tj 函数中,需将计数器 sum 初始化为 0,表示当前选择的活动数为 0。修改后的代码如下:

    2023-05-26 来自 浙江

    0

热门讨论