正文

stu(1059)2005-08-30 20:16:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/4271.html

分享到:

#include"iostream.h" void print(int *data,int n) {     int i;     int a,b;                       //-----判断前面有没有相同的点,如果有,则从第二个起将所有的点前移,并将点的总数n减1-----         while(data[2]==data[0]&&data[3]==data[1])     {         for(i=0;i<2*n-2;i++)    data[i]=data[i+2];     //前移                 n--;                                   //总数减1     }              //-----如果不相同的点只有小于或等于2个,则输出“YES”-----         if(n<=2)    {cout<<"YES"<<endl;    return;}                       //-----如果第一个点的横坐标跟第二个点的横坐标相等,则直接判断其它(n-2)个点的横坐标是否也跟它们相等-----         if(data[2]==data[0])     {         //-----将其它(n-2)个点的横坐标与其进行比较-----                 for(i=0;i<n-2;i++)                  if(data[2*i+4]!=data[2])                   {cout<<"NO"<<endl;return;}                          //-----如果都相等,则输出“YES”-----                 cout<<"YES"<<endl;                          return;     }              //-----如果第一个点的纵坐标跟第二个点的纵坐标相等,则直接判断其它(n-2)个点的纵坐标是否也跟它们相等-----         if(data[3]==data[1])     {                          //-----将其它(n-2)个点的纵坐标与其进行比较-----                 for(i=0;i<n-2;i++)                  if(data[2*i+5]!=data[1])                   {cout<<"NO"<<endl;return;}                          //-----如果都相等,则输出“YES”-----                 cout<<"YES"<<endl;                          return;     }                       //-----一般情况下作如下处理-----         a=data[3]-data[1];b=data[2]-data[0];                  //-----利用斜率进行比较-----         for(i=0;i<n-2;i++)              if(a*(data[2*i+4]-data[0])!=b*(data[2*i+5]-data[1]))                       {cout<<"NO"<<endl;return;}              cout<<"YES"<<endl; } int main() {     int i,n;     int data[300];              while(cin>>n)     {         for(i=0;i<2*n;i++)              cin>>data[i];         print(data,n);     }              return 1; }

阅读(2661) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册