UVA216 Getting in Line

2014-11-23 20:00:44 · 作者: · 浏览: 4


使用暴利枚举所有可能的排列,找出最小花费时候的排列即可。

使用一个数组来保存输入,使用一个数组来产生排列,使用另外一个数组来保存当期最小花费时候的排列。


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