1 solutions

  • 0
    @ 2025-11-5 15:48:01

    C++ :

    #include<stdio.h>
    struct node
    {
    	int  x, y;
    }a[700];
    int main()
    {
    	int n;
    	while(scanf("%d",&n)!=EOF)
    	{
    		int max=0;int ax,ay;
    		for (int i=0;i<n;i++)
    			scanf("%d%d",&a[i].x,&a[i].y);
    		for (int i=0;i<n-2;i++)
    		{
    			for (int j=i+1;j<n-1;j++)
    			{
    				int sum=0;
    				for (int k=j+1;k<n;k++)
    				{
    					if (k!=i&&k!=j&&i!=j)
    					{
    						int as;
    						as=a[i].x*a[j].y+a[j].x*a[k].y+a[k].x*a[i].y-a[k].x*a[j].y-a[k].y*a[i].x-a[j].x*a[i].y;
    						if (as==0)  //用面积为0来证明三点共线
    							sum++;
    					}
    				}
    				if (max<sum) max=sum;
    			}
    		}
    		printf("%d\n",max+2);
    	}
    }
    
    • 1

    Information

    ID
    17184
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By