zoukankan      html  css  js  c++  java
  • 计算几何

    计算几何 — 叉积求多边形面积

    题目 poj1654 Areas
    Areas 这个是我自己开的,进不去的
    在这里插入图片描述
    在这里插入图片描述

    然后就是一点一点的算了,

    #include <iostream>
    using namespace std;
    // 1 西南 23 东南 4 向西 5 停止 6 向东 7 西北 8 向北 9 东北 
    int dx[10] = {0 , -1  , 0 , 1 , -1 , 0 , 1 ,-1 , 0 ,1} ;
    int dy[10] = {0 , -1  ,-1 ,-1 ,  0 , 0 , 0 , 1 , 1 ,1} ;
    typedef long long ll ;
    int main()
    {
    	int t ;
    	cin >> t ;
    	string str ;
    	while(t --)
    	{
    		cin >> str ;
    		int len = str.size() ;
    		ll ans = 0 , px = 0 , py = 0 , ax = 0 , ay = 0 ;
    		for(int i = 0 ;i < len - 1;i ++)
    		 {
    		 	int t0 = str[i] - '0' ;
    		 	px = ax + dx[t0] ;
    		 	py = ay + dy[t0] ;
    		 	ans += (ax * py - ay * px) ;
    		 	ax = px , ay = py ;
    		 }
    		 if(ans < 0) ans *= -1 ;
    		 cout << ans /2 ;
    		 if(ans % 2) cout << ".5" << endl ;  
    		 // 如果有小数的话,对于这个题目而言肯定是0.5 
    		 //但是有个情况就是之前ans/20,然后这个地方就不能输出0.5了。
    		 //而是输出.5,这样的话,不管ans/2为多少都可以直接算上了
    		 else cout << endl ;
    	}
    	return 0 ;
    }
    
  • 相关阅读:
    Git 学习小问题记录
    Spring缓存源码剖析:(一)工具选择
    最佳线程数
    Python 装饰器备忘
    使用SCSS扩展Bootstrap4
    Flask 路由相关操作
    Flask开发环境搭建
    Python数据分析开发环境
    Python中的矩阵操作
    Windows 安装 MySQL 8.0.11
  • 原文地址:https://www.cnblogs.com/spnooyseed/p/12870931.html
Copyright © 2011-2022 走看看