问题描述:
赤壁之战前夕,庞统向周瑜献连环计,瑜设计使蒋干邀庞统到曹营。操与统同观营寨,
又共论兵法。统对答如流使操敬服。统乘机提出:大江中风浪不息使北兵易生疾病。可将大
小船配搭,首尾用铁环连锁,铺阔板以便人马行走。操闻之大喜,派人连夜打造连环大钉,
锁住船只。
每打造一单位长度的铁索要花费一单位的钱,曹操希望用最少的花费将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 连环计相关推荐

  1. 数据结构与算法实验题 7.2 连环计

    问题描述: 赤壁之战前夕,庞统向周瑜献连环计,瑜设计使蒋干邀庞统到曹营.操与统同观营寨,又共论兵法.统对答如流使操敬服.统乘机提出:大江中风浪不息使北兵易生疾病.可将大 小船配搭,首尾用铁环连锁,铺阔 ...

  2. 数据结构与算法实验题 4.2 Who is the strongest

    数据结构与算法实验题 4.2 Who is the strongest ★实验任务 在神奇的魔法世界,召唤师召唤了一群的魁偶.这些魁偶排成一排,每个魁偶都有一个 战斗值.现在该召唤师有一个技能,该技能 ...

  3. 数据结构与算法实验题 6.1 鼹鼠掘土挑战赛

    数据结构与算法实验题 6..1 鼹鼠掘土挑战赛 ★实验任务 在潘多拉星的哈利路亚山上,生活着许多鼹鼠矿工,它们同属于潘多拉矿业公司哈利路 亚分公司.尽管在潘多拉星最美丽壮阔的地方工作,是一件十分让普通 ...

  4. 数据结构与算法实验题 10.1 神谕者

    ★实验任务  众所周知,dota 中神谕者的大招可以抵挡所有伤害,但是当大招结束时会一次性结算所有伤害.神谕者在大招期间已经遭受了 n 次伤害,他现在希望知道自己所遭受伤害中的第 k 小伤害值,但是他 ...

  5. 数据结构与算法实验题 9.8 转移炸弹

    ★实验任务 A国有 N个城市,这些城市编号为 1到 N,有一天,他们调查出恐怖分子在每个城市中都安放了炸弹,于是他们给炸弹也编上了序号,第 i 个城市里的炸弹编号为 i.现在他们想把这些炸弹转移,以便 ...

  6. c语言编写队列元素逆置,数据结构与算法实验—利用栈逆置队列元素.doc

    数据结构与算法实验-利用栈逆置队列元素 利用栈逆置队列元素实验报告 通信1204班 谢崇赟 实验名称 利用堆栈将队列中的元素逆置 实验目的 会定义顺序栈和链栈的结点类型. 掌握栈的插入和删除结点在操作 ...

  7. Ants (POJNo.1852)--数据结构与算法刷题记录

    数据结构与算法刷题记录1 时间:4.28 这是第一次用CSDN来记录自己的学习成果,在此留下纪念,希望自己能够坚持下去,变得更强. 本次学习记录来源于<挑战程序设计竞赛(第2版)> Ant ...

  8. 一夜登顶GitHub!字节内网数据结构与算法刷题笔记,看完直呼卧槽

    网络上流传着一句段子"程序员两条腿,一条是算法,一条是英文,想跑的更远,这两条腿都不能弱".英文,我们暂且不谈,我们先来谈谈算法. 算法之难,在于将精巧的逻辑,通过合适的数据结构, ...

  9. 面试题库 之 数据结构与算法 100题

    1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表. 要求不能创建任何新的结点,只调整指针的指向. 10 / \ 6 14 / \ / \ 4 8 ...

最新文章

  1. HIbernate——hibernate中的各种查询
  2. 4.8 计算机网络之网络层设备路由器
  3. 工程师如何解决穿衣搭配烦恼?
  4. 二叉树构建及双向链表
  5. Laravel 使用 scout 集成 elasticsearch 做全文搜索
  6. 实锤了!锤子卖身字节跳动 Smartisan OS官微透露了信息
  7. php写好的接口怎么返回数据库,用PHP开发app接口,连接了数据库,调试的时候正常输出,但是转为json格式返回的数据为null...
  8. ps cs6 磨皮插件_DR5插件加强版 for Mac(ps磨皮滤镜)
  9. 木质机器人挂坠_木质挂坠相比绚烂夺目的金银首饰,用木头做的饰品更显得古香古色...
  10. 基于持久层框架hibernate用SpringMVC增删功能
  11. string类用法Java_Java中String类的用法
  12. 阿里云php探针,X 探针(刘海探针)开源 PHP 探针介绍
  13. 【ESP32】HardwareSerial库使用
  14. Kindle3 字典安装
  15. catchlog是什么软件_如何处理异常? catch Exception OR catch Throwable
  16. 大天使之剑服务器维护,《大天使之剑H5》9月4日服务器临时维护公告
  17. java实验 类和对象_java 实验(三) 类和对象
  18. 利用Hound快速搭建代码搜索引擎
  19. 西工大计算机考研机试题练习(2019年-2014年)
  20. 华为ac配置radius认证服务器_华为aaa配置 华为AAA认证典型配置举例 - 网络设备 - 服务器之家...

热门文章

  1. 解决RabbitMQ的The channelMax limit is reached. Try later.
  2. 关于熵增的一点个人看法
  3. camunda视频教程_camunda
  4. 希捷正式发布12TB硬盘:二代充氦 单碟1.5TB
  5. Kotlin学习与实践 (一)WWH (what?why?how)
  6. 兴戈EN700铜雀动圈耳机评测:中端价位不死鸟
  7. ubuntu修复启动引导
  8. iPhone手机关掉这3个设置,不仅省电,而且手机还不会出现卡顿
  9. OSChina 周六乱弹 ——我要传送回狗星!
  10. ERP的真正能带来的功能是哪些?