摘要: //求多边形的重心算法//说明://求多边形重心并不是简单的把求三角形的重心公式推广就行了//我的算法是在平面上取一点(一般取原点, 这样可以减少很多计算, 而且使思路更清晰^_^)//这样就得到了N个三角形OP[i]P[i+1](其中点的顺序要为逆时针的),//分别求出这N个三角形的重心Ci和面积Ai(注意此处面积是又向面积, 就是用叉乘求面积时保留其正负号)//在求出A = A1+A2+...+AN(同样保留正负号的代数相加)//最终重心C = sigma(Ai+Ci)/A;#include <iostream>#include <cmath>#include &l 阅读全文
posted @ 2011-07-29 15:04 枕边梦 阅读(542) 评论(0) 推荐(0) 编辑
摘要: 题目不难,还是利用向量叉积,看图接下来,只需按逆时针一次判断一边和一点的关系,若叉积>0,则表示存在大于180的内角,即为凹多边形#include<iostream>#include<math.h>using namespace std;struct node{ int x,y;}p[100];int seg(node p1,node p2,node p3){ int d=(p3.x-p1.x)*(p2.y-p1.y)-(p2.x-p1.x)*(p3.y-p1.y); if(d<0) return 1; else return 0;}int main(){ 阅读全文
posted @ 2011-07-29 11:51 枕边梦 阅读(1639) 评论(0) 推荐(1) 编辑
摘要: 要猜到最大的数字m,也就是说,在1到m间的每一个数,你都能在n次内把它猜出来!http://hi.baidu.com/xiao%5Fyu%5Ffeng/blog/item/11ab800ed1a7a3236159f334.html所以说在最坏的情况下,在1到m间,你最多只要猜log2(m)+1(取整)次,所以易知==>m=2^n-1.即猜n次,你能猜到的最大的数为2^n-1.我们也可认为,在数1到2^n-1间,我们都可以在n次内猜出来,如果大于这个数,n次内我们就哟可能猜不来了。例如1--7间,我们至少要猜3次猜可以#include<stdio.h>int main(){ i 阅读全文
posted @ 2011-07-29 11:05 枕边梦 阅读(255) 评论(0) 推荐(0) 编辑