【求助】玄学剪枝出现玄学错误
查看原帖
【求助】玄学剪枝出现玄学错误
210740
est1ck_0tto楼主2021/8/26 11:00

代码:

#include<bits/stdc++.h>
using namespace std;
double xx[110],yy[110];
int h[110];
int n;
int coun;
double ans=INT_MAX;
double sq(int x1,int y1,int x2,int y2){
	return sqrt(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2)));
}
void dfs(int dep,int x,int y,double s){
	if(s>=ans)return ;
	if(coun>=1e7*3)return ;
	if (dep==n){
		ans=s;
		return;
	}
	for(int i=1;i<=n;i++){
		if (h[i]==0){
			h[i]=1;
			dfs(dep+1,xx[i],yy[i],s+sq(x,y,xx[i],yy[i]));
			h[i]=0;
			if(coun>=1e7*3)return ;
		coun++;
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>xx[i]>>yy[i];
	} 
	dfs(0,0,0,0);
	cout<<fixed<<setprecision(2)<<ans;
	return 0;
}

交上去后第三个点wa了

下了数据自测是对的

输入:

输出:

程序:

2021/8/26 11:00
加载中...