1 条题解

  • 0
    @ 2023-6-11 12:16:46

    C :

    #include<stdio.h>
    int n,begin[1000],end[1000],a[1000],k;
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    	scanf("%d %d",&begin[i],&end[i]);
    	for(int i=1;i<n;i++)
    	for(int j=i+1;j<=n;j++)
    	if(end[i]>end[j])
    	{
    		int t1=begin[i],t2=end[i];
    		begin[i]=begin[j];
    		begin[j]=t1;
    		end[i]=end[j];
    		end[j]=t2;
    	}
    	int endx=0;
    	for(int i=1;i<=n;i++)
    	if(begin[i]>=endx)
    	{
    		endx=end[i];
    		k++;
    	}
    	printf("%d",k);
    	return 0;
    }
    

    C++ :

    #include<iostream>
    using namespace std;
    int n,b[1001],e[1001];
    void solve()
    { 
      int ans=0;
      int t = -1;
      for(int i=1;i<=n;++i)     
       //如果当前活动与之前最后结束的活动不冲突,就接受当前活动。
       if(b[i]>=t) {
          ++ans;
    	  t=e[i];
       }
      cout<<ans<<endl;
    }
    int main()
    {
      int i,j,t;
      cin>>n;
      for(i=1;i<=n;i++) 
         cin>>b[i]>>e[i];
      //按照结束时间对2个数组同时排序
      for(i = 1;i < n;i++){
      	  for(j = 1;j <= n - i;j++){
      		   if(e[j] > e[j+1]){
      		     swap(e[j],e[j+1]);
    			 swap(b[j],b[j+1]);	
    		   }
    	  }
      }
       
      solve();
      return 0;
    }
    
    

    Python :

    n=int(input())
    a=[[0 for i in range(2)] for j in range(n)]
    for i in range(n):
        sr=input().split()
        a[i][0]=int(sr[0])
        a[i][1]=int(sr[1])
    for i in range(n-1):
        for j in range(n-i-1):
            if(a[j][1]>a[j+1][1]):
                t=a[j][0]
                a[j][0]=a[j+1][0]
                a[j+1][0]=t
                t=a[j][1]
                a[j][1]=a[j+1][1]
                a[j+1][1]=t
    c=[]
    c.append(a[0][1])
    k=0
    for i in range(1,n):
        if(a[i][0]>=c[k]):
            k=k+1
            c.append(a[i][1])
    print(k+1)
    
    • 1

    信息

    ID
    2292
    时间
    1000ms
    内存
    16MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者