平行四边形编程问题

qqqqwwww12 2010-04-20 01:33:36
给出平面上N个不同的点的坐标,计算这些点一共可构成多少个不同的平行四边形,数据保证任意四点不共线。
数据输入
输人第一行包括一个正整数N(N<=600),表示点的个数。接下来N行,每行包括两个int型整数,给出每个点的坐标,两个数之间用空格隔开。
数据输出
输出只有一行,即平行四边形的个数。
例如输入
7
-2 -1
8 9
5 7
1 1
4 8
2 0
9 8
输出
6

这题怎么编程?
...全文
360 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenchangxiong 2010-04-20
  • 打赏
  • 举报
回复
向量两端点在坐标数组中的下标。
qqqqwwww12 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chenchangxiong 的回复:]
比如点(1,3),(3,1)得到的向量为(2,-2)
而(3,1), (1,3)得到的是(-2,2),取反(或许我用词不准确)得到(2,-2)
ps:最终判定平行四边形是查找是否有重复的点,没的话就是平行四边形,有的话不是
ps:这个向量数组要带断点的索引:
例如
坐标的数组为(1,3) (3,1)
向量的数据结构可能如下:
struct
{
int vecx;
int v……
[/Quote]
int startpoint;
int endpoint;
这两个表示什么?
chenchangxiong 2010-04-20
  • 打赏
  • 举报
回复
比如点(1,3),(3,1)得到的向量为(2,-2)
而(3,1), (1,3)得到的是(-2,2),取反(或许我用词不准确)得到(2,-2)
ps:最终判定平行四边形是查找是否有重复的点,没的话就是平行四边形,有的话不是
ps:这个向量数组要带断点的索引:
例如
坐标的数组为(1,3) (3,1)
向量的数据结构可能如下:
struct
{
int vecx;
int vecy;
int startpoint;
int endpoint;
};
那么这两点的这个结构形式为:
struct
{
int vecx = 2;
int vecy = -2;
int startpoint = 0;
int endpoint = 1;
};
qqqqwwww12 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chenchangxiong 的回复:]
先计算任意两点的向量(可以取反的方式,把点间向量化为指向x轴正向)
大概得到15w数量级的向量数组,对这个数组进行按x优先进行排序,
然后从小到大找向量一样的4点,判是否为平行四边形。
[/Quote]
向量?取反?没明白~
chenchangxiong 2010-04-20
  • 打赏
  • 举报
回复
先计算任意两点的向量(可以取反的方式,把点间向量化为指向x轴正向)
大概得到15w数量级的向量数组,对这个数组进行按x优先进行排序,
然后从小到大找向量一样的4点,判是否为平行四边形。
赵4老师 2010-04-20
  • 打赏
  • 举报
回复

if (x2-x1==x4-x3
&& y2-y1==y4-y3
&& x3-x1==x4-x2
&& y3-y1==y4-y2) {
//点1243构成平行四边形
}

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧