给定四条线段判断是否可以构成一个矩形
2014-06-15 09:20
495 查看
根据矩形的性质,我们可以知道如果围成的四边形的四个角都是直角就可以判断其是否为一个矩形(前提是这四条线段能围成四边形)
#include <stdio.h> #include <string.h> #include <iostream> using namespace std; struct note { int x,y; } a[8]; int x[9],y[9]; int angle(int x,int y,int m,int n,int p,int q) { // printf("**\n"); //printf("%d,%d,%d,%d,%d,%d\n",x,y,m,n,p,q); if((long long)(p-x)*(m-x)+(long long)(q-y)*(n-y)==0) { // printf("&&\n"); return 1; } return 0; } int judge(int a,int b,int x,int y,int p,int q,int m,int n) { if(angle(a,b,x,y,m,n)==0||angle(x,y,a,b,p,q)==0||angle(m,n,a,b,p,q)==0||angle(p,q,x,y,m,n)==0) { //printf("%%\n"); return 0; } return 1; } int main() { int p,q,e,f; while(~scanf("%d%d",&a[0].x,&a[0].y)) { int k=1; x[0]=a[0].x,y[0]=a[0].y; for(int i=1; i<8; i++) { scanf("%d%d",&a[i].x,&a[i].y); int cnt=1; for(int j=0; j<i; j++) { if(a[i].x==a[j].x&&a[i].y==a[j].y) cnt=0; } if(cnt) x[k]=a[i].x,y[k++]=a[i].y; } /* for(int i=0; i<k; i++) printf("(%d,%d)\n",x[i],y[i]);*/ if(k!=4) { printf("NO\n"); continue; } int flag=0; if(judge(x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3])||judge(x[0],y[0],x[2],y[2],x[1],y[1],x[3],y[3])||judge(x[0],y[0],x[2],y[2],x[3],y[3],x[1],y[1])) flag=1; if(flag==1) printf("YES\n"); else printf("NO\n"); } return 0; } /* 0 0 1 1 0 0 3 0 1 1 4 1 3 0 4 1 */
相关文章推荐
- 题目1.请给出一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个证书x时,判断出S中是否存在有两个其和等于x的元素。
- 判断一个给定的字符串通过循环移位是否可以包含另一个字符串
- 给四条线段,判断是否是矩形
- 1410 Intersection 判断线段和矩形是否相交 转换为判断和矩形四条边是否相交以及线段是否在矩形内部 包含端点
- 判断三个参数是否能构成一个三角形。如果不能则抛出异常IllegalArgumentException, * 显示异常信息:a,b,c “不能构成三角形”;如果可以构成则显示三角形三个边长。在主方
- 给定二叉树的前序和中序,判断是否可以构成一颗二叉树,如果可以输出后序
- 1.实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1
- 1.实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1
- 判断一个给定的字符串通过循环移位是否可以包含另一个字符串
- 描述一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数 X 时,判断出S中是否存在有两个其和刚好等于 X 的元素。
- 题目:请给出一个运行时间为Θ(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
- 经典算法 | 给定n个矩形,判断这些矩形是否在不重合的情况下组成一个大矩形的算法
- 判断输入的三个数据是否可以构成一个三角形
- C#判断一个string是否可以为数字
- 判断一个string是否可以为数字
- 如何用最简单最快的方法判断一个BMP图片是否为黑白图片?我现在是全图片scanline 然后再加以分析,太慢了,有没有直接的函数可以做到呢?
- C#判断一个string是否可以为数字
- 今天写了一个很简单的判断平面坐标系两线段是否相交的算法
- 如何快速判断一个整数是否可以整除另一个整数的理论分析
- GraphicsPath类—可以判断某一点是否在某一个graph的内部