zoukankan
html css js c++ java
PKU1039
几何题
#include
<
math.h
>
#include
<
string
.h
>
#include
<
stdio.h
>
struct
Point
{
double
x,y;
}
;
struct
Line
{
double
x1, y1;
double
x2, y2;
}
;
int
n;
double
x[
20
],y[
20
];
Line line;
int
result;
double
dis;
Point cut(Line l)
{
double
a1, b1, a2, b2;
a1
=
(line.y2
-
line.y1)
/
(line.x2
-
line.x1);
b1
=
line.y1
-
a1
*
line.x1;
a2
=
(l.y2
-
l.y1)
/
(l.x2
-
l.x1);
b2
=
l.y1
-
a1
*
l.x1;
Point p;
p.x
=
(b2
-
b1)
/
(a1
-
a2);
p.y
=
a1
*
p.x
+
b1;
return
p;
}
double
ppdis(Point p1, Point p2)
{
return
sqrt((p1.x
-
p2.x)
*
(p1.x
-
p2.x)
+
(p1.y
-
p2.y)
*
(p1.y
-
p2.y));
}
double
distance()
{
double
dis1, dis2;
Point p1,p2,p3;
p1.x
=
0
, p1.y
=
(line.y2
-
line.y1)
/
(line.x2
-
line.x1)
*
(
0
-
line.x1)
+
line.y1;
Line line1, line2;
line1.x1
=
x[result
-
1
];
line1.y1
=
y[result
-
1
];
line1.x2
=
x[result];
line1.y2
=
y[result];
p2
=
cut(line1);
line2.x1
=
x[result
-
1
];
line2.y1
=
y[result
-
1
]
-
1
;
line2.x2
=
x[result];
line2.y2
=
y[result]
-
1
;
p3
=
cut(line2);
dis1
=
ppdis(p1,p2);
dis2
=
ppdis(p1,p3);
//
printf("%d %lf %lf\n",result, p2.x,p2.y);
if
(dis1
<
dis2)
return
dis2;
else
return
dis1;
}
bool
thro(
int
i)
{
double
holdy
=
(line.y2
-
line.y1)
/
(line.x2
-
line.x1)
*
(x[i]
-
line.x1)
+
line.y1;
if
(holdy
>=
y[i]
-
1
&&
holdy
<=
y[i])
return
1
;
else
return
0
;
}
int
cnt()
{
int
i;
for
(i
=
0
; i
<
n; i
++
)
{
if
(
!
thro(i))
break
;
}
return
i;
}
void
func()
{
int
i, j;
int
res;
for
(i
=
0
; i
<
n; i
++
)
{
for
(j
=
i
+
1
; j
<
n; j
++
)
{
line.x1
=
x[i];
line.y1
=
y[i];
line.x2
=
x[j];
line.y2
=
y[j];
res
=
cnt();
if
(result
<
res)
{
result
=
res;
dis
=
distance();
}
line.x1
=
x[i];
line.y1
=
y[i];
line.x2
=
x[j];
line.y2
=
y[j]
-
1
;
res
=
cnt();
if
(result
<
res)
{
result
=
res;
dis
=
distance();
}
line.x1
=
x[i];
line.y1
=
y[i]
-
1
;
line.x2
=
x[j];
line.y2
=
y[j];
res
=
cnt();
if
(result
<
res)
{
result
=
res;
dis
=
distance();
}
line.x1
=
x[i];
line.y1
=
y[i]
-
1
;
line.x2
=
x[j];
line.y2
=
y[j]
-
1
;
res
=
cnt();
if
(result
<
res)
{
result
=
res;
dis
=
distance();
}
}
}
}
int
main()
{
while
(scanf(
"
%d
"
,
&
n)
!=
EOF)
{
if
(n
==
0
)
break
;
result
=
0
;
dis
=
0
;
int
i;
for
(i
=
0
; i
<
n; i
++
)
{
scanf(
"
%lf%lf
"
,
&
x[i],
&
y[i]);
}
func();
/**/
/*
line.x1=0,line.y1=1,line.x2=4,line.y2=1;
int xx=thro(3);
printf("%d\n",xx);
*/
if
(result
<
n)
printf(
"
%.2f\n
"
,dis);
else
printf(
"
Through all the pipe.\n
"
);
}
return
0
;
}
查看全文
相关阅读:
Python自学之路-面试题
k8s学习笔记之三:configmap和secret
k8s学习笔记之二:Pod
k8s学习笔记之四:使用kubeadm配置Ingress
k8s学习笔记之一:使用kubeadm安装k8s集群
HTTP content-type
Json对象和Json字符串的区别
.net 5+ 知新:【2】 .Net Framework 、.Net 、 .NET Standard的概念与区别
Log4net和Nlog
通过系统存储过程手动执行SQL Server中的Job
原文地址:https://www.cnblogs.com/SQL/p/897746.html
最新文章
提问的智慧
前缀、中缀、后缀表达式
select函数
面向对象的七大设计原则
类与类之间的关系
static关键字的作用
@RequestParam、@RequestBody、@ResponseBody
@RequestMapping、@PostMapping、@GetMapping
@RestController
把对象加入到Spring容器的几个注解
热门文章
@ComponentScan
@EnableAutoConfiguration
使用FastDFS的删除方法注意事项
@RequestBody
@SpringBootApplication
java入门-java后端开发学习路线
python自学之路-逻辑运算符
##python自学之路 --常用函数##
Python自学之路-python文件操作
k8s学习笔记之五:volume,PV ,PVC
Copyright © 2011-2022 走看看