UVA 216 - Getting in Line

题目大意:给你n台电脑,每条线可以连着两台电脑,求将所有电脑连起来最短需要多长的线(一条折线),每段线要另外再加16。

解题思路:全排列,取其中最短的情况即可。由1到n的全排列演变为下标就可以了。

全排列代码:

#include 
#include 
using namespace std;
int n, vis[1005], num[1005];
void dfs(int d)
{
	if (d >= n){
		for (int i=0; i

ac代码:

#include 
#include 
#include 
using namespace std;
struct node{
	int a;
	int b;
}no[10];
int n, cnt, num[10], vis[10], mi[10], count=1, temp2[10];
double sum, temp;
double dis(node a, node b)
{
	double d;
	d = sqrt(pow( (a.a-b.a),2 ) + pow( (a.b-b.b),2 ));
return d+16;
}
void dfs(int d)
{
	if (d >= n){
		temp = 0;
		for (int i=0; i

你可能感兴趣的:(UVA 216 - Getting in Line)