算法设计与分析——回溯法——圆排列问题

#include<iostream>
#include<math.h> 
using namespace std;
class Circle
{public:float Center(int t);void Compute(void );void BackTrack(int t);float min;  	//当前最优值 float *x;		//当前圆排列圆心横坐标 		float *r;		//当前圆排列 float *result;  //记录最终 的圆半径排序 int n;			//待排列圆的个数 
};
float Circle::Center(int t)//计算当前所选圆的圆心横坐标 
{float temp = 0;//记录临时的圆心的横坐标for(int j=1;j<t;j++){float valuex = x[j]+2.0*sqrt(r[t]*r[j]);//算一下前面所有的圆心到目前第T个圆的圆心的距离 //因为可能这里有陷阱 if(valuex > temp)temp = valuex; } return temp;} void Circle::Compute(void)//计算当前圆排列的长度 {float low = 0,high = 0;for(int i=1;i<=n;i++){if(x[i]-r[i]<low)low = x[i] - r[i];if(x[i]+r[i]>high)high = x[i] + r[i];}if(high-low<min)min = high - low;} 
void Circle::BackTrack(int t)
{if(t>n){Compute();}else{for(int j=t;j<=n;j++){swap(r[t],r[j]);float centerx = Center(t);if(centerx+r[t]+r[1]<min){result[j]=r[t];x[t] = centerx;BackTrack(t+1);}swap(r[t],r[j]);} }
} 
float CirclePerm(int n,float *a)
{Circle X;X.n =n;X.r =a;X.min = 100000;float *x =new float [n+1];X.x= x;float *result = new float [n+1]; X.result= result;X.BackTrack(1);cout<<"输出圆排列后圆半径的序列:";for(int i=1;i<=n;i++){cout<<X.result[i]<<" ";}cout<<endl;delete[] x;return X.min;
}
int main()
{int n;cout<<"输入圆的个数:";cin>>n; cout<<"输入圆半径序列:";float a[n+1];for(int i=1;i<=n;i++){cin>>a[i];}cout<<CirclePerm(n,a);
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字图像处理王伟强_深度学习主导下,还有必要学数字图像处理?

图像处理技术作为计算机视觉的基础&#xff0c;通过计算机对图像进行去除噪声增强、复原、分割、提取特征等处理的方法和技术。多用于目标检测与目标识别等领域。>>数字图像处理、CV、CG与AI四者的关系图<<随着计算机视觉的迅速发展&#xff0c;基于深度学习的研究…

Dotnet Core下的Channel, 你用了吗?

今天给大家分享一个微软官方的好东西&#xff1a;Channel。前言今天给大家分享一个微软官方的生产者/消费者方案的特性解决&#xff1a;Channel。Channel在System.Threading.Channels命名空间下&#xff0c;Core 2.1使用时&#xff0c;需要从Nuget上安装。% dotnet add package…

算法设计与分析——贪心算法——单个出水口打水问题

1.打水问题&#xff1a;有n个人去水房排队打水&#xff0c;只有一个出水口&#xff0c;且出水口流速恒定。每个人因为盛水的工具不一&#xff0c;打水所需的时间也不一致&#xff0c;设第i个人所需要的打水时间为ti&#xff1b;问如何安排打水顺序使得所有人的平均等待时间最短…

在传统行业做数字化转型之最终篇

【数字化转型】| 作者 / Edison Zhou这是EdisonTalk的第310篇原创内容在过去的两年时间里&#xff0c;我加入了一家传统行业的企业参与其数字化转型的过程&#xff0c;现在我将我的经历分享出来&#xff0c;本文是最终篇&#xff0c;主要会回答中途一些网友的问题以及推荐一些参…

算法设计与分析——贪心算法——汽车加油问题

汽车加油问题&#xff1a;一辆汽车加满油后可行驶n公里&#xff0c;旅途中有若干个加油站&#xff0c;两加油站间距离不超n 公里&#xff0c;起点离第一个加油站距离及最后一个加油站离终点距离也不超过n公里。算法给出应在哪些加油站停靠加油&#xff0c;使沿途加油次数最少。…

python 求和并排序_Python算法教程第三章知识点:求和式、递归式、侏儒排序法和并归排序法...

本文目录&#xff1a;一、求和式&#xff1b;二、递归式&#xff1b;三、侏儒排序法和并归排序法微信公众号&#xff1a;geekkr一、求和式# 假设有一函数为f()&#xff0c;则在Python中经常使用的求和方法如下。sum(f(i) for i in range(m, n1)) sum(g(i) for i in range(m, n…

.NET Conf China 2020志愿者招募火热开启!还有神秘惊喜等你来领…

距.NET Conf China 2020 2020 中国 .NET 开发者大会开幕还有14天作为.NET的组织者之一我们已经为这个活动准备铺垫了很久但为了保证活动方方面面的质量为了给现场&线下的小伙伴们带来更好的体验现在&#xff01;我们十分需要你们的帮助&#xff01;为更好地做好大会服务工作…

如何使用exclipse打开已有的文件夹

若要打开非workspace文件夹下的其他已有工程&#xff0c;可以打开菜单file->import→general→existing project into space.在select root directory中选中要打开的文件夹即可

golang 修改nginx配置文件_「系统架构」Nginx调优,不可错过的几点

通常&#xff0c;Nginx在安装完后&#xff0c;不用更改任何配置信息&#xff0c;我们就可以直接运行它。但是&#xff0c;这显然不能满足我们的生产要求。在生产中&#xff0c;要让Nginx能正常高效地运行我们的应用&#xff0c;我们通常需要对Nginx的配置文件进行一些参数上的设…

如何在 C# 中使用 Attribute

译文链接&#xff1a;https://www.infoworld.com/article/3006630/how-to-work-with-attributes-in-c.html?nsdrtrueAttribute 在 C# 中是一个非常强大的特性&#xff0c;它能够给你的程序集添加元数据信息。Attribute 实际上是一个对象&#xff0c;它可以与以下元素中的任何一…

readyread信号不触发_触发器型PFD与传统型PFD性能仿真对比

&#xfeff;TOC 鉴频鉴相器中为了保证鉴相范围&#xff0c;主要有两种PFD可以在理想情况下实现 到 的鉴相范围。 传统的PFD和边沿触发型的PFD1.电路结构1.1传统型电路结构参考文献&#xff1a;宽带CMOS分数频率合成器的研究与实现——黄福青 东南大学博士论文 1.2 触发器型电路…

算法设计与分析——分治与递归——整数划分问题

将正整数n表示为一系列正整数之和&#xff0c; nn1n2n3n4......nk &#xff08;其中&#xff0c;n1>n2>n3>n4........>nk>0,k>1&#xff09;正整数n的这种表示成为正整数n的划分。正整数n的不同划分个数成为正整数n的划分数&#xff0c;记作p&#xff08;n…

跟我一起学Redis之Redis持久化必知必会

前言Redis是出了名的速度快&#xff0c;那是因为在内存中进行数据存储和操作&#xff1b;如果仅仅是在内存中进行数据存储&#xff0c;那就会导致以下问题&#xff1a;•数据随进程退出而消失&#xff1a;当服务器断电或Redis Server进程退出时&#xff0c;内存肯定随之释放&am…

python while循环true_Python while循环,pause while not,true时继续?

这是我借用的一点python。它用树莓皮监控门上的三个带簧片开关的引脚。如果门开了&#xff0c;上面写着“门开着”。在问题是它总是重复开放。我要它说一次&#xff0c;停下来&#xff0c;等门关上再继续监视。在import timeimport RPi.GPIO as ioimport subprocessio.setmode(…

算法设计与分析——分支限界法——装载问题

有一批共个集装箱要装上2艘载重量分别为C1和C2的轮船&#xff0c;其中集装箱i的重量为Wi&#xff0c;且装载问题要求确定是否有一个合理的装载方案可将这个集装箱装上这2艘轮船。如果有&#xff0c;找出一种装载方案。 容易证明&#xff1a;如果一个给定装载问题有解&#xff…

BootstrapBlazor 之王者组件 Table

强大的表格组件Gitee 开源地址为&#xff1a;https://gitee.com/LongbowEnterprise/BootstrapBlazorGithub 开源地址为&#xff1a;https://github.com/ArgoZhang/BootstrapBlazor在线演示网站&#xff1a;https://www.blazor.zone1、前言 Table&#xff08;表格&#xff09;组…

用python实现流程自动化_Python自动化开发 - 流程控制

一、拾遗主题1、变量理解变量在计算机内存中的表示>>> a "ABC"Python解释器干了两件事情&#xff1a;在内存中创建了一个ABC的字符串&#xff1b;在内存中创建了一个名为a的变量&#xff0c;并把它指向ABC可以把一个变量name1赋值给另一个变量name2&#x…

数据结构——最大堆最小堆

定义&#xff1a; 最大堆和最小堆都是一棵完全二叉树。 最大堆&#xff1a;是指根节点的关键字值是堆中的最大关键字值&#xff0c;且每个节点若有儿子节点&#xff0c;其关键字值都不小于其儿子节点的关键字值。 最小堆&#xff1a;是指根节点的关键字值是堆中的最小关键字值…

EntityFramework Core 健康检查

【导读】.NET Core提供对应方法可进行健康检查&#xff0c;那么在EF Core中是否也提供了相应的方式呢&#xff1f;EF Core 2.2&#xff08;包含2.2&#xff09;版本提供了针对上下文的健康检查&#xff0c;接下来我们直接利用.NET 5.0版本进行演示EntityFramework Core 5.0健康…

python将列表的第一列删除_python列表基本操作:索引(访问),切片,扩展,删除,追加,统计,长度,获取下标等...

List(列表)列表&#xff0c;是一种用于保存一系列有序项目的集合&#xff0c;在 Python 中你需要在它们之间加上一个逗号注意&#xff1a;列表是可变数据类型列表的基本操作有&#xff1a;索引(访问)&#xff0c;切片&#xff0c;扩展&#xff0c;删除&#xff0c;追加&#xf…