POJ 3174 1001

題目鏈接:http://poj.org/problem?id=3174

題目大意:給一個數n,然後給出n各點的座標,判斷有幾組點在一條直線上,輸出,然後每行輸出一組點的id,id小的先輸出;

一開始用的斜率判斷,,,有誤差,應該用向量x1y2=x2y1表示三點共線;

代碼如下:

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct point
{
    int x;
    int y;
    int id;
} a[1000];
struct ss{
   int p;
   int q;
   int z;

}ans[1000000];
int main()
{
    int N;
    scanf("%d",&N);
    for(int i=1; i<=N; i++)
    {
        scanf("%d%d",&a[i].x,&a[i].y);
        a[i].id=i;
    }
    int f=0;
    int num=0;
    for(int i=1; i<=N; i++)
    {

        for(int j=i+1; j<=N; j++)
        {
            for(int k=j+1; k<=N; k++)
            {
                int x1 = a[j].x-a[i].x;
                int x2 = a[k].x-a[j].x;
                int y1 = a[j].y-a[i].y;
                int y2 = a[k].y-a[j].y;
                if(x1*y2==x2*y1)
                {
                    ans[num].p=i;
                    ans[num].q=j;
                    ans[num++].z=k;
                }
            }

        }
    }
    printf("%d\n",num);
    for(int i=0;i<num;i++)
        printf("%d %d %d\n",ans[i].p,ans[i].q,ans[i].z);
}

發佈了67 篇原創文章 · 獲贊 24 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章