使用暴利枚举所有可能的排列,找出最小花费时候的排列即可。
使用一个数组来保存输入,使用一个数组来产生排列,使用另外一个数组来保存当期最小花费时候的排列。
for(int i=0;i>input[i].x>>input[i].y;
array[i]=i;
//一定要在这里给solution赋初始值,负责solution里面可能是空的
solution[i]=i;
}
for(int i=0;i>input[i].x>>input[i].y;
array[i]=i;
//一定要在这里给solution赋初始值,负责solution里面可能是空的
solution[i]=i;
}一定要在初始的时候就给保存结果的数组赋初始值,因为第一个排列可能就是最优解。如果第一个就是最优解的话那么..........我就是因为没有给它赋值,而Wrong Answer的好多次.
具体看代码:
#include
#include
#include
#include
#include
using namespace std;
struct point
{
int x;
int y;
}input[10]; //记录坐标
double getDistance(double,double,double,double);
int main()
{
int pointNumber;
int count=1;
while(cin>>pointNumber,pointNumber!=0)
{
int solution[8]; //存储每次更新后的顺序
int array[8];
for(int i=0;i>input[i].x>>input[i].y;
array[i]=i;
//一定要在这里给solution赋初始值,负责solution里面可能是空的
solution[i]=i;
}
double minCost;
double tempNumber=0;
for(int i=0;i
#include
#include
#include
#include
using namespace std;
struct point
{
int x;
int y;
}input[10]; //记录坐标
double getDistance(double,double,double,double);
int main()
{
int pointNumber;
int count=1;
while(cin>>pointNumber,pointNumber!=0)
{
int solution[8]; //存储每次更新后的顺序
int array[8];
for(int i=0;i>input[i].x>>input[i].y;
array[i]=i;
//一定要在这里给solution赋初始值,负责solution里面可能是空的
solution[i]=i;
}
double minCost;
double tempNumber=0;
for(int i=0;i