您的位置:首页 > 其它

【POJ】:POJ2606,poj1118,poj2780合集

2016-01-08 16:15 344 查看

题意

这三道题都是问了一个知识,就是给出很多点,然后问的是最多有多少个点在一条线上,差不多代码都能用

解法

遍历遍历遍历!!!!!!!!!

遍历遍历遍历!!!!!!!!!

遍历遍历遍历!!!!!!!!!

思路就是遍历,以两个点为初始点,然后判断其他点是否在这条线上,如果在这条线上,就对统计值进行增添运算。这就是计算的结果

详见代码

代码

[code]#include <iostream>
using namespace std;
const int maxn=1000;
struct point{
    int x;
    int y;
}P[maxn];
int main(){
    int n,i;
    while(cin>>n){
        for(i=0;i<n;i++){
            cin>>P[i].x>>P[i].y;
        }
        int max = 0;
        for(i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                int cnt = 2;
                for(int k=j+1;k<n;k++){
                    int m = (P[k].y-P[j].y)*(P[j].x-P[i].x);
                    int n = (P[j].y-P[i].y)*(P[k].x-P[j].x);
                    if(m==n){
                        cnt++;
                    }
                }
                if(cnt>max)  max = cnt;
            }
        }
        cout<<max<<endl;
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: