杭电 2036 改革春风吹满地【求多边形面积】
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                杭电 2036 改革春风吹满地【求多边形面积】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2036
解題思路:將多邊形劃分成n個三角形,將這些三角形的面積依次累加求和即可,這里將多邊形劃分成若干個小三角形時有兩種辦法。
1
在多邊形的內(nèi)部任意選擇一個點O,這樣可以將n邊行劃分成n個小三角形,將這n個三角形的面積加起來就可以了。詳情參見http://blog.csdn.net/sun_shine_/article/details/18799739
2
選擇多邊形上的一個點作為每個劃分出來的小三角形的頂點,如果是多邊形p1p2p3-----pn的話,就可以選擇p1作為頂點,這樣可以劃分成n-2個小三角形。
將這n-2個小三角形的面積加起來就可以了。
反思:在用第一種方法做的時候,一定要注意求最后一個三角形的時候,它又與最開始的第一個三角形連接起來了,單獨算最后一個就可以了。
1
#include<stdio.h> int main() {int n;int x[100],y[100];double s;int i;while(scanf("%d",&n)!=EOF&&n){s=0;for(i=1;i<=n;i++){scanf("%d %d",&x[i],&y[i]);}for(i=1;i<n;i++){s+=(x[i]*y[i+1]-x[i+1]*y[i])*0.5;}s+=(x[i]*y[1]-x[1]*y[i])*0.5;printf("%.1lf\n",s);}}2
#include<stdio.h> int main() {int n;int x[100],y[100];double s;int i;while(scanf("%d",&n)!=EOF&&n){s=0;for(i=1;i<=n;i++){scanf("%d %d",&x[i],&y[i]);}for(i=1;i<=n-2;i++){s+=((x[i+1]-x[1])*(y[i+2]-y[1])-(x[i+2]-x[1])*(y[i+1]-y[1]))*0.5;}printf("%.1lf\n",s);}}
轉(zhuǎn)載于:https://www.cnblogs.com/wuyuewoniu/p/4107009.html
總結(jié)
以上是生活随笔為你收集整理的杭电 2036 改革春风吹满地【求多边形面积】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: SQL字符串处理函数大全
- 下一篇: 【C/C++】实型变量
