给出平面上的n个点,现在需要你求出,在这n个点里选3个点能构成一个三角形的方案有几种。
输入描述
第一行包含一个正整数n,表示平面上有n个点(n <= 100)
第2行到第n + 1行,每行有两个整数,表示这个点的x坐标和y坐标。(所有坐标的绝对值小于等于100,且保证所有坐标不同)
输出描述
输出一个数,表示能构成三角形的方案数。
输入例子1:
4
0 0
0 1
1 0
1 1
输出例子1:
4
思路
遍历所有三点组合,三点不共线即可组成三角形
判断三点是否共线:两条线段斜率是否相等? (x1-x2) * (y1-y3) = (y1-y2) * (x1-x3)
代码
from itertools import combinations
n = int(input())
dot = []
count =0
for i in range(n):
dot.append(list(map(int,input().split())))
index = [i for i in range(n)]
combine = list(combinations(index,3))
for j in combine:
if (dot[j[0]][0]-dot[j[1]][0])*(dot[j[0]][1]-dot[j[2]][1])!=
(dot[j[0]][1]-dot[j[1]][1])*(dot[j[0]][0]-dot[j[2]][0]):
count += 1
print(count)
网友评论