RPFS(RP First Search) 模拟退火算法 未完

来源:互联网 发布:淘宝卖aj的正品店 编辑:程序博客网 时间:2024/06/11 23:47

POJ 2420

求费马点

代码来自网络

#include<cmath>#include<cstdio>const double inf=1e9;const int N=100;const double threshold=1e-7,delta=0.98,inital_temperature=100;const double d[4][2]={{0,1},{1,0},{0,-1},{-1,0}};int n;struct Point {double x,y;};Point p[N];inline double sqr(const double x) {return x*x;}inline double dist(const Point a,const Point b) {return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));}inline double getsum(const Point x) {double ret=0;for(int i=0;i<n;i++) {ret+=dist(x,p[i]);}return ret;}int main() {scanf("%d",&n);for(int i=0;i<n;i++) {scanf("%lf%lf",&p[i].x,&p[i].y);}Point nowp=p[0];double ans=getsum(nowp),t=inital_temperature;while(t>threshold) {bool finished=false;while(!finished) {finished=true;for(int i=0;i<4;i++) {Point nextp;nextp.x=nowp.x+d[i][0]*t;nextp.y=nowp.y+d[i][1]*t;if(getsum(nextp)<ans) {ans=getsum(nextp);nowp=nextp;finished=false;}}}t*=delta;}printf("%.f\n",ans);}


原创粉丝点击