ADT设计

在lab2中,开始被要求去书写AF,RI,SSafety from rep exposure,于是总结ADT设计基础认知如下:

一.可变类型与不可变类型

可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。

不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。

数据类型

可变/不可变

整型

不可变

字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
算法思想: 本题可以采用 Dijkstra 算法来解决,找到小明到所有景点的最短距离,然后选取最近的 K 个景点。 具体来说,可以按照以下步骤来实现: 1. 初始化距离数组 dist 和访问标记数组 visited,将起点的距离设为 0,其他点的距离设为无穷大。 2. 从起点开始,遍历其周围的所有边,更新与其相邻的点的距离。 3. 从未访问的点中选取距离最小的点,标记为已访问。 4. 重复步骤 2 和 3,直到访问完所有点或者已选取了 K 个景点。 5. 统计最近的 K 个景点的距离之和,输出结果。 伪代码描述: ``` Dijkstra(G, s, K): 初始化距离数组 dist 和访问标记数组 visited 将起点 s 的距离设为 0,其他点的距离设为无穷大 将起点 s 加入到候选景点集合 S 中 while S 中未选择 K 个景点且存在未访问的点: 从候选景点集合 S 中选取距离最小的点 u,标记为已访问 遍历点 u 的所有邻居 v: 如果 v 未被访问: 更新 v 的距离 dist[v],即 dist[v] = min(dist[v], dist[u] + w(u,v)) 将 v 加入到候选景点集合 S 中 统计最近的 K 个景点的距离之和,输出结果 ``` 时间复杂度:O((n+m)logn),其中 n 是点的数量,m 是边的数量。每个点最多被访问一次,并且需要将点加入到候选集合中,时间复杂度为 O(logn)。因此总时间复杂度为 O((n+m)logn)。 空间复杂度:O(n),需要一个 dist 数组和一个 visited 数组来存储距离和访问状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值