1 条题解

  • 0
    @ 2025-2-14 21:20:41

    C :

    #include "stdio.h"
    #include "stdlib.h"
    int n,max;
    int a[5000],b[5000],c[5000];
    int main()
    {
    	int i,j,k;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		scanf("%d%d",&a[i],&b[i]);
    		c[i]=1;
    	}
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<i;j++)
    			if(a[i]<a[j])
    			{
    				k=a[i],a[i]=a[j],a[j]=k;
    				k=b[i],b[i]=b[j],b[j]=k;
    			}
    			if(a[i]==a[j]&&b[i]<b[j])
    			{
    				k=a[i],a[i]=a[j],a[j]=k;
    				k=b[i],b[i]=b[j],b[j]=k;
    			}
    	}
    	for(i=1;i<n;i++)
    	{
    		for(j=0;j<i;j++)
    		{
    			if(b[i]>b[j]&&c[i]==c[j])
    				c[i]++;
    		}
    	}
    	max=0;
    	for(i=0;i<n;i++)
    	{
    		if(max<c[i])
    			max=c[i];
    	}
    	printf("%d\n",max);
    	return 0;
    }
    

    C++ :

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    struct p{int x;int y;};p a[5001];
    int n,f[5001]={0},mmax=0;
    int cmp(const p & a,const p & b)
    {
        return a.y<b.y;
    }
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y);
    	sort(a+1,a+n+1,cmp);
    	for(int i=1;i<=n;i++)
    	   for(int j=1;j<=i;j++)
    	   {
    	   	  if(a[j].x<a[i].x&&f[j]>=f[i]) f[i]=f[j]+1;
    	   	  if(mmax<f[i]) mmax=f[i];
    	   }
    	printf("%d",mmax+1);
    }
    

    Pascal :

    type node=record
           father:longint;
           fm:longint;
           end;
    type s=record
          x,y:longint;
          end;
    var a:array[1..10050]of s;
        b:array[1..10050]of node;
        c:array[1..50000]of longint;
        i,j,k,n,max,t:longint;
    begin
      readln(n);
      for i:=1 to n do
       begin
        read(a[i].x,a[i].y);
        b[i].fm:=1;
        b[i].father:=0;
       end;
        for i:=1 to n-1 do
        begin
          for j:=i+1 to n do
            if a[i].x>a[j].x then
              begin
                t:=a[i].x;
                a[i].x:=a[j].x;
                a[j].x:=t;
                t:=a[i].y;
                a[i].y:=a[j].y;
                a[j].y:=t;
              end;
        end;
      for i:=n-1 downto 1 do
        for j:=i+1 to n do
          begin
            if (a[i].y<a[j].y)and (b[i].fm<b[j].fm+1) then
             begin
               b[i].fm:=b[j].fm+1;
               b[i].father:=j;
               continue;
             end;
          end;
      max:=0;
      for i:=1 to n do
        if b[i].fm>max then
        begin
          max:=b[i].fm;
          k:=i;
        end;
      writeln(max);
      {repeat
        if b[k].father=0 then
          writeln(a[k].y)
          else
        write(a[k].y,' ');
        k:=b[k].father;
       until k=0;}
    end.
    
    • 1

    信息

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