?? pku1408.cpp
字號:
#include <stdio.h>
#include <math.h>
void calc_poi(double a, double b, double c, double d, double ans[])
{
ans[0] = (c * (a - b) - a) / ((b - a) * (d - c) - 1);
ans[1] = (a * (c - d) - c) / ((d - c) * (b - a) - 1);
}
double calc_area(double p1[], double p2[], double p3[], double p4[])
{
double area;
area = p1[0] * p2[1] - p1[1] * p2[0] + p2[0] * p3[1] - p2[1] * p3[0]
+ p3[0] * p4[1] - p3[1] * p4[0] + p4[0] * p1[1] - p4[1] * p1[0];
return fabs(area);
}
int main()
{
double a[32], b[32], c[32], d[32], area, max;
double p[4][2];
int i, j;
int n;
double ans[2];
while (scanf("%d", &n) != -1 && n != 0)
{
a[0] = b[0] = c[0] = d[0] = 0;
a[n+1] = b[n+1] = c[n+1] = d[n+1] = 1;
for (i = 1; i <= n; i++)
{
scanf("%lf", &a[i]);
}
for (i = 1; i <= n; i++)
{
scanf("%lf", &b[i]);
}
for (i = 1; i <= n; i++)
{
scanf("%lf", &c[i]);
}
for (i = 1; i <= n; i++)
{
scanf("%lf", &d[i]);
}
for (i = 0, max = 0; i <= n; i++)
{
for (j = 0; j <= n; j++)
{
calc_poi(a[i], b[i], c[j], d[j], p[0]);
calc_poi(a[i], b[i], c[j+1], d[j+1], p[1]);
calc_poi(a[i+1], b[i+1], c[j+1], d[j+1], p[2]);
calc_poi(a[i+1], b[i+1], c[j], d[j], p[3]);
area = calc_area(p[0], p[1], p[2], p[3]);
if (area > max)
{
max = area;
}
}
}
printf("%.6lf\n", max / 2.0);
}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -