深搜 90 求优化 TT
查看原帖
深搜 90 求优化 TT
387647
kuaikauilele楼主2022/3/15 19:28

深搜 90 求优化 TT

#include<iostream>
#include<cmath>
using namespace std;
double min_value=100000.0;
int n;
double a[15][2];
bool vis[15];
bool f=false;
bool isOk(){
	bool flage=true;
	for(int i=0;i<n;i++){
		if(!vis[i]){
			flage=false;
		} 
	}
	
	return flage;
}

void dfs(double x,double y,double distance){
	
	if(f){
		return;
	} 
	
	if(distance>min_value){
		return;
	} 
	
	if(isOk()){
		f=true;
		if(min_value>distance){
			min_value=distance;
		}
		return;
	} 
	
	for(int i=0;i<n;i++){
		if(!vis[i]){
			vis[i]=true;
			double xx=(x-a[i][0])*(x-a[i][0]);
			double yy=(y-a[i][1])*(y-a[i][1]);
			double distance_tmp=distance+sqrt(xx+yy);
			dfs(a[i][0],a[i][1],distance_tmp);	
			vis[i]=false;
			f=false;
//			cout<<distance<<endl;
		}
	}
	
	
	
} 


int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<2;j++){
			cin>>a[i][j];
		}
	}
	

		dfs(0,0,0.0);


	printf("%.2f",min_value);
	return 0;
}
2022/3/15 19:28
加载中...