本文主要是介绍HDU 2036 改革春风吹满地,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
yiyi:我现在终于体会到了,之前学姐说的数学要学好的用意了。
在这道题里就有用到,那么以后在其他的题目中肯定还会遇到更难的,所以以后一定要好好学数学,已知三角形的三个顶点坐标求面积的方法来求多边形的面积:
首先把n多边形分割成n-2个三角形,分割的三角形有一个公共的起点。然后就是三角形的三个顶点坐标如果为A(a,b),B(c,d),C(e,f)的话。那么这个三角形的面积S=1/2*三阶行列式 = (ad+be+cf-af-bc-de)/2.
输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。
Output
每个实例的输出占一行。
Sample Input
3 0 0 1 0 0 1 4 1 0 0 1 -1 0 0 -1 0
Sample Output
0.5 2.0
答案:
#include <stdio.h>float s1 (int a, int b, int c, int d, int e, int f) {float s2;s2 = (a * d + c * f +b * e -e * d - c * b - a * f) / 2.0;return s2;
}
int main () {int i, j, n;float s;int x[100], y[100];while (scanf("%d", &n) != EOF && n != 0) {for (i = 0; i < n; i++) {scanf("%d%d", &x[i], &y[i]);}s = 0;for (i = 0; i < n-2; i++) {s = s + s1(x[0],y[0],x[i+1],y[i+1],x[i+2],y[i+2]);}printf("%.1f\n", s);}return 0;
}
这篇关于HDU 2036 改革春风吹满地的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!