数据结构与算法实验题7.2 连环计
问题描述:
赤壁之战前夕,庞统向周瑜献连环计,瑜设计使蒋干邀庞统到曹营。操与统同观营寨,
又共论兵法。统对答如流使操敬服。统乘机提出:大江中风浪不息使北兵易生疾病。可将大
小船配搭,首尾用铁环连锁,铺阔板以便人马行走。操闻之大喜,派人连夜打造连环大钉,
锁住船只。
每打造一单位长度的铁索要花费一单位的钱,曹操希望用最少的花费将n 艘战船连接起
来(任意两艘战船直接或间接被铁索连接),每艘战船可以看成一个点,坐标为(xi,yi),曹
营中有一位神秘人物,他所在的战船必须和曹操所在战船直接连接,求最小花费。
数据输入:
第一行战船数n(2<=n<=100)。
第二行神秘人物所在的战船序号a,曹操所在战船序号b,(1<=a,b<=n,a!=b),战船序号
从1 到n。
接下来n 行,每行两个实数(建议定义成double 类型):xi,yi(-1000<=xi,yi<=1000),表
示序号为i 的战船的坐标。
结果输出:
连接n 艘战船的最小花费,输出答案的时候四舍五入保留两位小数。
输入示例: 输出示例:
4
2 3
0 0
1 0
0 -1
1 -1
3.14
根据prim算法思想,把已经建成的道路初始化为0就ok了
1 2 #include<stdio.h> 3 #include<string.h> 4 #include<cmath> 5 double g[101][101]; 6 double ans=0; 7 double func(double a,double b,double x,double y) 8 { 9 return fabs(sqrt((x-a)*(x-a)+(y-b)*(y-b))); 10 11 } 12 void prim(int n) 13 { 14 double lowcost[101],min;int closet[101]; 15 int i,j,k; 16 int used[101]; 17 memset(used,0,sizeof(used)); 18 for(i=1;i<=n;i++) 19 lowcost[i]=g[i][1], 20 closet[i]=1; 21 used[1]=1; 22 for(i=1;i<n;i++) 23 { 24 min=12345678; 25 j=1; 26 for(k=2;k<=n;k++) 27 { 28 if(lowcost[k]<min&&(!used[k])) 29 min=lowcost[k], 30 j=k; 31 } 32 used[j]=1; 33 ans+=g[j][closet[j]]; 34 for(k=2;k<=n;k++) 35 { 36 if(g[k][j]<=lowcost[k]&&(!used[k])) 37 { 38 lowcost[k]=g[k][j]; 39 closet[k]=j; 40 } 41 } 42 } 43 } 44 int main() 45 { 46 int n,i,j; 47 double t[110][2],a1,a2,m,tmp; 48 int a,b; 49 scanf("%d",&n); 50 scanf("%d %d",&a,&b); 51 int k=1; 52 for(i=1;i<=n;i++) 53 { 54 scanf("%lf %lf",&t[k][0],&t[k++][1]); 55 } 56 for(i=1;i<=n;i++) 57 for(j=1;j<=n;j++) 58 g[i][j]=12345678.0; 59 for(i=1;i<=n;i++) 60 { 61 for(j=1;j<=n;j++) 62 { 63 if(i!=j) 64 { 65 g[i][j]=func(t[i][0],t[i][1],t[j][0],t[j][1]); 66 } 67 else 68 g[i][j]=0; 69 } 70 } 71 double k1=func(t[a][0],t[a][1],t[b][0],t[b][1]); 72 g[a][b]=g[b][a]=0.0; 73 74 prim(n); 75 printf("%.2lf\n",ans+k1); 76 return 0; 77 } 78 79
View Code
数据结构与算法实验题7.2 连环计相关推荐
- 数据结构与算法实验题 7.2 连环计
问题描述: 赤壁之战前夕,庞统向周瑜献连环计,瑜设计使蒋干邀庞统到曹营.操与统同观营寨,又共论兵法.统对答如流使操敬服.统乘机提出:大江中风浪不息使北兵易生疾病.可将大 小船配搭,首尾用铁环连锁,铺阔 ...
- 数据结构与算法实验题 4.2 Who is the strongest
数据结构与算法实验题 4.2 Who is the strongest ★实验任务 在神奇的魔法世界,召唤师召唤了一群的魁偶.这些魁偶排成一排,每个魁偶都有一个 战斗值.现在该召唤师有一个技能,该技能 ...
- 数据结构与算法实验题 6.1 鼹鼠掘土挑战赛
数据结构与算法实验题 6..1 鼹鼠掘土挑战赛 ★实验任务 在潘多拉星的哈利路亚山上,生活着许多鼹鼠矿工,它们同属于潘多拉矿业公司哈利路 亚分公司.尽管在潘多拉星最美丽壮阔的地方工作,是一件十分让普通 ...
- 数据结构与算法实验题 10.1 神谕者
★实验任务 众所周知,dota 中神谕者的大招可以抵挡所有伤害,但是当大招结束时会一次性结算所有伤害.神谕者在大招期间已经遭受了 n 次伤害,他现在希望知道自己所遭受伤害中的第 k 小伤害值,但是他 ...
- 数据结构与算法实验题 9.8 转移炸弹
★实验任务 A国有 N个城市,这些城市编号为 1到 N,有一天,他们调查出恐怖分子在每个城市中都安放了炸弹,于是他们给炸弹也编上了序号,第 i 个城市里的炸弹编号为 i.现在他们想把这些炸弹转移,以便 ...
- c语言编写队列元素逆置,数据结构与算法实验—利用栈逆置队列元素.doc
数据结构与算法实验-利用栈逆置队列元素 利用栈逆置队列元素实验报告 通信1204班 谢崇赟 实验名称 利用堆栈将队列中的元素逆置 实验目的 会定义顺序栈和链栈的结点类型. 掌握栈的插入和删除结点在操作 ...
- Ants (POJNo.1852)--数据结构与算法刷题记录
数据结构与算法刷题记录1 时间:4.28 这是第一次用CSDN来记录自己的学习成果,在此留下纪念,希望自己能够坚持下去,变得更强. 本次学习记录来源于<挑战程序设计竞赛(第2版)> Ant ...
- 一夜登顶GitHub!字节内网数据结构与算法刷题笔记,看完直呼卧槽
网络上流传着一句段子"程序员两条腿,一条是算法,一条是英文,想跑的更远,这两条腿都不能弱".英文,我们暂且不谈,我们先来谈谈算法. 算法之难,在于将精巧的逻辑,通过合适的数据结构, ...
- 面试题库 之 数据结构与算法 100题
1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. 要求不能创建任何新的结点,只调整指针的指向. 10 / \ 6 14 / \ / \ 4 8 ...
最新文章
- HIbernate——hibernate中的各种查询
- 4.8 计算机网络之网络层设备路由器
- 工程师如何解决穿衣搭配烦恼?
- 二叉树构建及双向链表
- Laravel 使用 scout 集成 elasticsearch 做全文搜索
- 实锤了!锤子卖身字节跳动 Smartisan OS官微透露了信息
- php写好的接口怎么返回数据库,用PHP开发app接口,连接了数据库,调试的时候正常输出,但是转为json格式返回的数据为null...
- ps cs6 磨皮插件_DR5插件加强版 for Mac(ps磨皮滤镜)
- 木质机器人挂坠_木质挂坠相比绚烂夺目的金银首饰,用木头做的饰品更显得古香古色...
- 基于持久层框架hibernate用SpringMVC增删功能
- string类用法Java_Java中String类的用法
- 阿里云php探针,X 探针(刘海探针)开源 PHP 探针介绍
- 【ESP32】HardwareSerial库使用
- Kindle3 字典安装
- catchlog是什么软件_如何处理异常? catch Exception OR catch Throwable
- 大天使之剑服务器维护,《大天使之剑H5》9月4日服务器临时维护公告
- java实验 类和对象_java 实验(三) 类和对象
- 利用Hound快速搭建代码搜索引擎
- 西工大计算机考研机试题练习(2019年-2014年)
- 华为ac配置radius认证服务器_华为aaa配置 华为AAA认证典型配置举例 - 网络设备 - 服务器之家...
热门文章
- 解决RabbitMQ的The channelMax limit is reached. Try later.
- 关于熵增的一点个人看法
- camunda视频教程_camunda
- 希捷正式发布12TB硬盘:二代充氦 单碟1.5TB
- Kotlin学习与实践 (一)WWH (what?why?how)
- 兴戈EN700铜雀动圈耳机评测:中端价位不死鸟
- ubuntu修复启动引导
- iPhone手机关掉这3个设置,不仅省电,而且手机还不会出现卡顿
- OSChina 周六乱弹 ——我要传送回狗星!
- ERP的真正能带来的功能是哪些?