Loading

[HDU - 2037今年暑假不AC

不得不说这道题的贪心策略对于那时我来说真的挺难想的,不过贪心策略难想好像就是贪心题目的特色?

按照结束时间排序,优先选取结束时间早的。

#include <stdio.h>
main()
{
    int n, end[101], start[101], r, i, j, sum = 0, k;    
    while(scanf("%d", &n) != EOF && n)
    {
        sum = 0;
        for(i = 0; i < n; i++)
            scanf("%d%d", &start[i], &end[i]);

        for(i = 0; i < n-1; i++)
        {
            k = i;
            for(j = i+1; j < n; j++)
            {
                if(end[k] > end[j])
                    k = j;
            }
            if(k != i)
            {
                r = end[k];
                end[k] = end[i];
                end[i] = r;

                r = start[k];
                start[k] = start[i];
                start[i] = r;
            }
        }
        
        //for(i = 0; i < n; i++)
        //        printf("%d %d\n", start[i], end[i]);
        
        k = 0;    
        for(i = 1; i < n; i++)
        {
            if(end[k] <= start[i])
            {
                k = i;
                sum++;
            }
        }
        printf("%d\n", sum+1);    

    }
    return 0;
}
      

 

posted @ 2019-08-20 14:08  ViKyanite  阅读(84)  评论(0编辑  收藏  举报