| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 367 人关注过本帖
标题:wa wa %>_<%
取消只看楼主 加入收藏
傻瓜菜
Rank: 2
来 自:earth
等 级:论坛游民
帖 子:73
专家分:66
注 册:2011-10-4
结帖率:94.44%
收藏
已结贴  问题点数:20 回复次数:0 
wa wa %>_<%
程序代码:
#include<stdio.h>
int main()
{
    int x1,x2,x3,x4,y1,y2,y3,y4,temp,ok;
    double k1,k2,s;
    while(scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF)
    {
        ok=0;
        if(x1>x2)
        {temp=x1;x1=x2;x2=temp;temp=y1;y1=y2;y2=temp;}
        if(x3>x4)
        {temp=x3;x3=x4;x4=temp;temp=y3;y3=y4;y4=temp;}
        if(x1==x2&&x3==x4)
        {
            if(x1!=x3) ok=0;
            else
            {
                if((y3>=y1&&y3<=y2)||(y3>=y2&&y3<=y1)) ok=1;
                if((y4>=y1&&y4<=y2)||(y4>=y2&&y4<=y1)) ok=1;
            }
        }
        if((x1==x2&&x3!=x4)||(x1!=x2&&x3==x4))
        {
            if(x3==x4)
            {
                temp=x1;x1=x3;x3=temp;temp=y1;y1=y3;y3=temp;
                temp=x2;x2=x4;x4=temp;temp=y2;y2=y4;y4=temp;
            }
            if(x3<=x1&&x4>=x1)
            {
                s=(y3-y4)/(x3-x4)*(x1-x3)+y3;
                if((s>=y1&&s<=y2)||(s>=y2&&s<=y1)) ok=1;
            }
        }
        if(x1!=x2&&x3!=x4)
            if((y1-y2)*(x3-x4)==(y3-y4)*(x1-x2))
                if((x1*y2-x2*y1)*(x3-x4)==(x3*y4-x4*y3)*(x1-x2))
                    if((x3>=x1&&x3<=x2)||(x4>=x1&&x4<=x2)) 
                        ok=1;
                    else 
                        ok=0;
                else
                    ok=0;
            else
            {
                k1=(x3*y4-x4*y3)*(x1-x2)-(x1*y2-x2*y1)*(x3-x4);
                k2=(y1-y2)*(x3-x4)-(y3-y4)*(x1-x2);
                s=k1/k2;
                if((s>=x1&&s<=x2)&&(s>=x3&&s<=x4)) ok=1;
            }
        if(ok) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}

题目是:
Description

最近在学习数论和一些数学的几何分析,偶然想到这么个问题。 在计算几何学里,线段直线是我们所熟悉的。 我们在学几何的时候都知道如何判断两直线是否相交,判断两线段是否相交。 那么,在算法里如何实现呢? 为了确定给定的两个平面线段是否相交,请设计一个算法,实现判断线段是否相交。
Input

数据输入有多组数据 每组数据包含两行,每行为一条线段的两个端点的平面坐标,格式为x1 y1 x2 y2,且它们都为整数。
Output

如果线段相交 输出YES 否则 输出NO。
Sample Input

0 0 1 1
0 -1 1 0
0 0 1 1
0 1 1 0
Sample Output

NO
YES
2012-01-29 23:31
快速回复:wa wa %>_<%
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017659 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved