POJ 2420 模拟退火
(2011-08-12 11:27:28)
标签:
poj2420模拟退火it |
分类: 计算几何 |
题目描述:平面上给你n个点,让你求一个点,到这n点的距离和最小。
解题报告:
代码如下:
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
#define NUM 20 //随机生成点的个数
#define TIM 20 //每个点移动的次数
#define RD 1000 //随即乘生成0~1的,精度为1/RD的小数
#define MIN 0.1 //步长T的最小值,比最后坐标要求的精度小一些
#define deta 0.7 //每次循环步长T的缩小程度
int n; //总点数,复杂度X * NUM * TIM * n; X为T到MIN的循环次数,由deta决定
struct pint
{
}jeo[200], tar[NUM];
double dist(pint a, pint b)
{return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));}
//判定函数
double judge(pint id)
{
}
//获取0~1的小数
double GetDouble()
{return (rand() % (RD + 1)) * 1.0 / RD;}
//获取左下角为a,右上角为b内的随机点
pint GetRand(pint a, pint b)
{
}
//模拟退火主过程 //MAXT为步长
void jeogia(double MaxT)
{
}
int main()
{
}