📄 wstsp.h
字号:
#pragma once
#include <vector>
typedef struct _CityPoint
{
FLOAT x;
FLOAT y;
}CityPoint, *PCityPoint;
typedef std::vector<INT> CityOrderDef;
typedef struct stCityInfo
{
INT m_CityNum;
CityOrderDef m_pCityOrder;
PCityPoint m_pCities;//按从0开始的顺序
public:
stCityInfo()
{
m_CityNum = 0;
m_pCityOrder.clear();
m_pCities = NULL;
}
stCityInfo(INT _CityNum, PCityPoint _pCities, CityOrderDef _pCityOrder)
{
m_CityNum = _CityNum;
m_pCityOrder = _pCityOrder;
m_pCities = _pCities;
}
}CityInfo, *PCityInfo;
class WSTSP
{
public:
WSTSP(void);
~WSTSP(void);
public:
static BOOL Show(CityOrderDef _Order);
public:
static INT GetRightIndex_Greedy(CityOrderDef _CityOrder, INT _CurCityNum);
static INT GetLeftIndex_Greedy(CityOrderDef _CityOrder, INT _CurCityNum);
static INT GetCityIndex(CityOrderDef _CityOrder, INT _CurCityNum);
static BOOL GetShortestCities(CityInfo &_CityInfo, INT _City, INT *_CitySerial, INT _ShortestCityNum = 3);
static BOOL MakeCityDistStyle(CityInfo &_CityInfo, INT **_CitySerial, INT _ShortestCityNum = 3);//已经定义好_CitySerial
static BOOL AdjustCityOrder(CityInfo &_CityInfo);
static BOOL MakeStyleCityOrder(CityInfo &_CityInfo, INT **_CitySerial, INT _ShortestCityNum = 3);
static FLOAT CityDistance(FLOAT _Ax, FLOAT _Ay, FLOAT _Bx, FLOAT _By);
static FLOAT CityDistance(CityPoint _A, CityPoint _B);
static FLOAT TSPTotalDistance(PCityInfo _pCityInfo);
static BOOL ReadCityInfoFromFile(PCHAR _FileName, CityInfo &_CityInfo);
static BOOL GenCityInfoToFile(PCHAR _FileName, INT _CityNum);
static VOID SwapValues(INT & _A, INT & _B);
static VOID GenRandCityOrder(CityInfo &_CityInfo);
static VOID GenRandCityOrder(CityOrderDef &_CityOrder);
static VOID ReverseSubOrder(CityOrderDef &_CityOrder);
static VOID ReverseSubOrder(INT _Begin, INT _End, CityOrderDef & _CityOrder);
static VOID RearrangeSubOrder(CityOrderDef &_CityOrder);
static VOID RearrangeSubOrder(INT _Begin, INT _End, CityOrderDef & _CityOrder);
static BOOL EqualOrders(CityOrderDef _A, CityOrderDef _B);
static BOOL CrossSubOrder(CityOrderDef _CityOrderPa, CityOrderDef _CityOrderPb, CityOrderDef & _CityOrderSa, CityOrderDef & _CityOrderSb);
static BOOL CrossSubOrder(INT _Begin, INT _End, CityOrderDef _CityOrderPa, CityOrderDef _CityOrderPb, CityOrderDef & _CityOrderSa, CityOrderDef & _CityOrderSb);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -