90分求调
  • 板块P1433 吃奶酪
  • 楼主_hxh
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/19 16:02
  • 上次更新2024/8/19 16:02:40
查看原帖
90分求调
536163
_hxh楼主2024/8/19 16:02

rt,搜索加剪枝写法,WA on #10,#12,#13

#include <bits/stdc++.h>
using namespace std;
int n,cnt;
double x[16],y[16],dis[16][16],ans;
bool vis[16];
void dfs(int deep,int now,double sum)
{
	cnt++;
	if (cnt >= 10000000)
	{
		cout << ans;
		exit(0);
	}
	if (deep > n)
	{
		ans = min(ans,sum);
		return;
	}
	for (int i = 1;i <= n;i++)
	{
		if (!vis[i])
		{
			double t = sum + dis[now][i];
			if (t >= ans)
				continue;
			vis[i] = 1;
			dfs(deep + 1,i,t);
			vis[i] = 0;
		}
	}
}
int main()
{
	cin >> n;
	ans = 1e9;
	for (int i = 1;i <= n;i++)
		cin >> x[i] >> y[i];
	for (int i = 0;i <= n;i++)
		for (int j = 0;j <= n;j++)
			dis[i][j] = sqrt(((x[i] - x[j]) * (x[i] - x[j])) + ((y[i] - y[j]) * (y[i] - y[j])));
	dfs(1,0,0);
	printf("%.2f",ans);
	return 0;
}

还是说这个题目无法用搜索得出正确答案?

2024/8/19 16:02
加载中...