杭电2037今年暑假不AC

来源:互联网 发布:摩拜单车在上海的数据 编辑:程序博客网 时间:2024/06/08 12:49

第一种方法:

#include<stdio.h>
#include<algorithm>
//using namespace std;
int main()
{
 int n,m;
 while(~scanf("%d",&n),n!=0)
 {
  int i,j,a[110],b[110],t,k,r,p;
  for(i=0;i<n;i++)
   scanf("%d %d",&a[i],&b[i]);
   for(j=1;j<n;j++)
   for(i=0;i<n-j;i++)
   if(b[i]>b[i+1])
   {
                           r=b[i];
                           b[i]=b[i+1];
                           b[i+1]=r;
                           p=a[i];
                           a[i]=a[i+1];
                           a[i+1]=p;//这三步刚开始时忘掉了,而答案是对的,找了好长时间。
            }
  //sort(b,b+n);
  for(i=0,k=0,t=1;i<n;i++)
  {
   if(a[i]>=b[k])
   {
    t++;
    k=i;
   }
  }
  printf("%d\n",t);
 }
 return 0;
}
第二种方法:

利用结构体和贪心算法

#include<stdio.h>
#include<algorithm>
using namespace std;
struct stu
{
          int a;
          int b;
};
bool cmp(stu q,stu r)
{
     return q.b<r.b;
}
int main()
{
     struct stu s[110];
    int n,m;
    while(~scanf("%d",&n)&&n!=0)
    {
                                int i,j,k,cout;
                                for(i=0;i<n;i++)
                                scanf("%d %d",&s[i].a,&s[i].b);
                                sort(s,s+n,cmp);
                                for(i=1,cout=1,k=0;i<n;i++)
                                if(s[i].a>=s[k].b)
                                {
                                                    cout++;
                                                    k=i;
                                }
                                printf("%d\n",cout);
                               
    }
    return 0;
}

0 0
原创粉丝点击