博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU_1086 You can Solve a Geometry Problem too(几何题)
阅读量:6279 次
发布时间:2019-06-22

本文共 994 字,大约阅读时间需要 3 分钟。

计算几何讲解:

一个比较好的范例:

代码:

#include 
struct node {
double x1, y1; double x2, y2; }l[110]; double X(double a, double b, double c, double d) {
return a*d - b*c; } int judge(int i, int j) {
double a = X(l[i].x1-l[j].x1, l[i].y1-l[j].y1, l[j].x2-l[j].x1, l[j].y2-l[j].y1); double b = X(l[i].x2-l[j].x1, l[i].y2-l[j].y1, l[j].x2-l[j].x1, l[j].y2-l[j].y1); double c = a*b; double d = X(l[j].x1-l[i].x1, l[j].y1-l[i].y1, l[i].x2-l[i].x1, l[i].y2-l[i].y1); double e = X(l[j].x2-l[i].x1, l[j].y2-l[i].y1, l[i].x2-l[i].x1, l[i].y2-l[i].y1); double f = d*e; if(c <= 0 && f <= 0) return 1; return 0; } int main() {
int n, i, j; //freopen("data.in", "r", stdin); while(scanf("%d", &n), n) {
int ans = 0; for(i = 1; i <= n; i++) scanf("%lf%lf%lf%lf", &l[i].x1, &l[i].y1, &l[i].x2, &l[i].y2); for(i = 1; i < n; i++) for(j = i+1; j <= n; j++) {
if(judge(i, j)) ans++; } printf("%d\n", ans); } return 0; }

转载地址:http://frnva.baihongyu.com/

你可能感兴趣的文章
运维基础命令
查看>>
入门到进阶React
查看>>
SVN 命令笔记
查看>>
检验手机号码
查看>>
重叠(Overlapped)IO模型
查看>>
Git使用教程
查看>>
使用shell脚本自动监控后台进程,并能自动重启
查看>>
Flex&Bison手册
查看>>
solrCloud+tomcat+zookeeper集群配置
查看>>
/etc/fstab,/etc/mtab,和 /proc/mounts
查看>>
Apache kafka 简介
查看>>
socket通信Demo
查看>>
技术人员的焦虑
查看>>
js 判断整数
查看>>
建设网站应该考虑哪些因素
查看>>
mongodb $exists
查看>>
js实现页面跳转的几种方式
查看>>
sbt笔记一 hello-sbt
查看>>
常用链接
查看>>
pitfall override private method
查看>>