题目:吃奶酪

问题描述:


解题思路:

枚举每种吃奶酪顺序,并计算其距离,选择最小的距离即答案。v数组:记录顺序。

注意点:1. 每次用于min的s需要重置为0。

2. 实数包括小数,所以结构体内x,y为double类型。

3. 第一次从原点开始出发要特判,即dis(a0(原点),av\[i](第一个顺序点))


AC代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int n;
struct Node{
	double x, y;  // 注意点2
}a[9];


double dis(Node a, Node b){
	return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}

void slove(){
	cin >> n;
	a[0].x = 0, a[0].y = 0;
	for(int i = 1; i <= n; i++)
	{
		cin >> a[i].x >> a[i].y;
	}
	
	vector<int> v;
	for(int i = 1; i <= n; i++)
	{
		v.push_back(i);	
	}
	double sum = 1e18;
	do{
		double s = 0;  // 注意点1:因为s是计算每种顺序计的最小值,所以枚举每种顺序时需要重置 
		for(int i = 0; i < n; i++)
		{
			if(i == 0)s += dis(a[v[i]], a[0]);  // 注意点3
			if(i)s += dis(a[v[i]], a[v[i - 1]]);
		}
		
		sum = min(sum, s);
	}while(next_permutation(v.begin(), v.end()));
	
	cout << fixed << setprecision(2) << sum ;
}


int main()
{
 	slove();	
	return 0;
}

**知识点:**全排列的使用

相关推荐
Fox爱分享38 分钟前
字节二面:1000瓶酒,有一瓶是毒药,多少只老鼠可以查出来?
算法·面试·程序员
+wacyltd大模型备案算法备案44 分钟前
大模型评估测试题库怎么建?风险分类、测试样本的完整方法
人工智能·算法·安全·分类·大模型·大模型备案·大模型上线登记
Fox爱分享1 小时前
字节二面智力题:100只老虎和1只羊关在一起,这只羊会不会被吃?
算法·面试·程序员
xin(n_n)b2 小时前
经典题目(3):把数字翻译成字符串;兑换零钱
算法
惊鸿一博2 小时前
特征匹配+Glue Factory 框架评估特征提取与匹配算法时常用的度量标准
算法·特征匹配
柒和远方2 小时前
LeetCode 4. 寻找两个正序数组的中位数 —— 二分划分的艺术
javascript·python·算法
z小猫不吃鱼3 小时前
模型剪枝经典论文精读:Channel Pruning for Accelerating Very Deep Neural Networks
算法·机器学习·剪枝
njsgcs3 小时前
已知链中心距用节数算中间电机摆放位置 常量弧长 三链轮弦长模型算法
算法
2601_962440844 小时前
计算机毕业设计之jsp旅游网站管理系统
java·开发语言·算法·课程设计·旅游·推荐算法
一个初入编程的小白4 小时前
数据结构:栈
数据结构