weixin_53577834 2021-08-31 15:51 采纳率: 43.5%
浏览 82
已结题

谁能帮我用c解决一下这个问题(测试用例有时间限制)

img

img

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-08-31 16:30
    关注

    代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    void sortbystart(int* s,int* e,int n)
    {
        int i,j,tmp;
        for (i=0;i<n-1;i++)
        {
            for (j=0;j<n-1-i;j++)
            {
                if(s[j] > s[j+1])
                {
                    tmp = s[j];
                    s[j] = s[j+1];
                    s[j+1] = tmp;
    
                    tmp = e[j];
                    e[j] = e[j+1];
                    e[j+1] = tmp;
                }
            }
        }
    }
    
    
    int main()
    {
        int n;
        int* s,*e;
        int nmb = 0,maxnmb = 0;
        int i = 0,j,t;
        scanf("%d",&n);
        s = (int*)malloc(sizeof(int)*n);
        e = (int*)malloc(sizeof(int)*n);
        for(j = 0;j<n;j++)
            scanf("%d %d",&s[j],&e[j]);
        sortbystart(s,e,n); //如果开始时间已经按照从小到大排序,则这一步可以注释掉
        while(i < n)
        {
            nmb = 1;
            j = i;
            t = j+1;
            while(t < n)
            {
                if(s[t] >= e[j])
                {
                    nmb++;
                    t++;
                    j++;
                }else
                {
                    t++;
                }
            }
            //printf("%d ",nmb);
            if( maxnmb < nmb)
                maxnmb = nmb;
            i++;
        }
        printf("%d\n",maxnmb);
        free(s);
        free(e);
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月1日
  • 修改了问题 8月31日
  • 修改了问题 8月31日
  • 修改了问题 8月31日
  • 展开全部