当前位置: 首页 > news >正文

数三角形

给出平面上的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

判断 a+b>c 即可,要注意三点在一条直线的情况,同时考虑到如果在枚举的时候进行计算距离 会有很多重复,因此预先把两点距离计算

import math
import sys

def diss(i, j, p):
    return math.sqrt((p[i][0]-p[j][0])**2 + (p[i][1]-p[j][1])**2)

def is_same_line(i, j, k, p):
    return (((p[j][1]-p[i][1])*(p[j][0]-p[k][0]))==((p[j][0]-p[i][0])*(p[j][1]-p[k][1])))

def main():
    n  = int(sys.stdin.readline().strip())
    points = []
    for i in range(n):
        points.append(list(map(lambda x: int(x), sys.stdin.readline().strip().split(' '))))
    maps = {}
    l = len(points)
    for i in range(l):
        for j in range(i+1, l):
            maps[str(i)+str(j)] = diss(i, j, points)
    result = 0
    for i in range(l):
        for j in range(i+1, l):
            for k in range(j+1, l):
                d1 = maps[str(i)+str(j)]
                d2 = maps[str(i)+str(k)]
                d3 = maps[str(j)+str(k)]
                if d1 + d2 >d3 and not is_same_line(i, j, k, points):
                    result += 1
    print(result)

if __name__ == '__main__':
    main()

相关文章:

  • 尝试写第一个js插件 图片轮播
  • 确定字符串互异
  • errno含义
  • 将满二叉树转换为求和树
  • JavaBean的学习
  • 排版页数
  • 最长回文串
  • 分享:Sersync试用
  • pstreegdb
  • 一点正则表达式的学习碎片
  • 链表分割
  • void*
  • python requests.session 与 requests
  • 爬虫_urlencode问题
  • 如何实现MySQL的自动备份
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • codis proxy处理流程
  • ES6简单总结(搭配简单的讲解和小案例)
  • leetcode98. Validate Binary Search Tree
  • Python中eval与exec的使用及区别
  • scrapy学习之路4(itemloder的使用)
  • Terraform入门 - 1. 安装Terraform
  • vue-cli在webpack的配置文件探究
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 工作中总结前端开发流程--vue项目
  • 关于Java中分层中遇到的一些问题
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 推荐一个React的管理后台框架
  • 小程序开发中的那些坑
  • 怎么把视频里的音乐提取出来
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (27)4.8 习题课
  • (9)目标检测_SSD的原理
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (十)c52学习之旅-定时器实验
  • (算法)求1到1亿间的质数或素数
  • (转)可以带来幸福的一本书
  • (转)树状数组
  • .net core Swagger 过滤部分Api
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net 调用php,php 调用.net com组件 --
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)