问题标题: 酷町堂:2777帮忙找错谢谢

0
0
已解决
袁翊凡
袁翊凡
新手光能
新手光能

 

#include<bits/stdc++.h>
using namespace std;
struct C
{
    int a,b;
}s[101];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>s[i].a>>s[i].b;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(j!=i&&s[j].a!=INT_MAX&&s[j].b!=INT_MAX&&s[i].a!=INT_MAX&&s[i].b!=INT_MAX&&s[j].a<=s[i].b&&s[i].a<=s[j].b)
            {
                if(s[j].a<=s[i].a&&s[j].b<=s[i].b)
                {
                    s[i].a=s[j].a;
                    s[j].a=INT_MAX;
                    s[j].b=INT_MAX;
                    n--;
                }
                else if(s[j].a<=s[i].a&&s[j].b>=s[i].b)
                {
                    s[i].a=s[j].a;
                    s[i].b=s[j].b;
                    s[j].a=INT_MAX;
                    s[j].b=INT_MAX;
                    n--;
                }
                else if(s[j].a>=s[i].a&&s[j].b>=s[i].b)
                {
                    s[i].b=s[j].b;
                    s[j].a=INT_MAX;
                    s[j].b=INT_MAX;
                    n--;
                }
                else if(s[j].a>=s[i].a&&s[j].b<=s[i].b)
                {
                    s[j].a=INT_MAX;
                    s[j].b=INT_MAX;
                    n--;
                }
            }
        }
    }
    cout<<n;
    return 0;
}


0
已采纳
张凌峰
张凌峰
新手光能
新手光能

   定义 n;
    输入>>n;
    //循环输入start和end
    //sort排序
    定义 ans=1,e=a[0].e;//ans=1是因为第一个为排序好的第一个区间。
    循环(int i=1;i<n;i++)
    {
        如果(a[i].s>e)//此时不能合并,下一个区间的开始大于上一个区间的结尾。
            ans++;
        end=max(e,a[i].e);
    }
    输出<<ans;

 

 

 

核心代码+注释!

望采纳!!!

0
我要回答