文心一言 VS 讯飞星火 VS chatgpt (210)-- 算法导论16.1 1题

一、根据递归式(16.2)为活动选择问题设计一个动态规划算法。算法应该按前文定义计算最大兼容活动集的大小 c[i,j]并生成最大集本身。假定输入的活动已按公式(16.1)排好序。比较你的算法和GREEDY-ACTIVITY-SELECTOR的运行时间。如何要写代码,请用go语言。

文心一言:

活动选择问题是一个典型的贪心算法问题,其目标是选择一组不重叠的活动,使得这些活动的总时间最长。动态规划也可以用来解决这个问题,但需要更多的存储空间来保存子问题的解。

为了设计动态规划算法,我们需要定义状态 c[i, j],它表示在考虑活动集合 S = {a_1, a_2, …, a_n} 的前 j 个活动,并且必须包含第 i 个活动时的最大兼容活动集的大小。

根据这个定义,我们可以写出状态转移方程:

c[i, j] = 1 + max(c[k, j-1]) for all k < i and finish[k] <= start[i]

其中 finish[k] 和 start[i] 分别表示活动 k 的结束时间和活动 i 的开始时间。这个方程表示,为了最大化包含活动 i 的兼容活动集的大小,我们需要找到所有在活动 i 开始之前结束的活动 k,然后在这些活动的基础上选择最大的兼容集。

下面是一个使用 Go 语言实现的动态规划算法,该算法同时计算出最大兼容活动集的大小和最大集本身:

package main  import (  "fmt"  
)  type Activity struct {  start, finish int  
}  func max(a, b int) int {  if a > b {  return a  }  return b  
}  func maxCompatibleActivities(activities []Activity) ([]Activity, int) {  n := len(activities)  c := make([][]int, n)  prev := make([][]int, n)  for i := range c {  c[i] = make([]int, n)  prev[i] = make([]int, n)  }  // Base case: single activities are always compatible  for i := 0; i < n; i++ {  c[i][i] = 1  prev[i][i] = i  }  maxSize := 0  maxSet := []Activity{}  for j := 1; j < n; j++ {  for i := 0; i < j; i++ {  maxSize = 0  for k := 0; k < i; k++ {  if activities[k].finish <= activities[i].start && c[k][j-1] > maxSize {  maxSize = c[k][j-1]  prev[i][j] = k  }  }  c[i][j] = maxSize + 1  if c[i][j] > maxSize && maxSize > 0 {  maxSet = append(maxSet[:0], activities[i])  maxSize = c[i][j]  }  }  }  // Reconstruct the maximum set  for j := len(activities) - 1; j >= 0; {  i := prev[j][len(activities)-1]  maxSet = append(maxSet, activities[i])  j = i  }  // Reverse the set to match the original order  for i, j := 0, len(maxSet)-1; i < j; i, j = i+1, j-1 {  maxSet[i], maxSet[j] = maxSet[j], maxSet[i]  }  return maxSet, maxSize  
}  func main() {  // Example activities sorted by finish time  activities := []Activity{  {start: 1, finish: 2},  {start: 3, finish: 4},  {start: 2, finish: 5},  {start: 0, finish: 6},  {start: 5, finish: 7},  {start: 6, finish: 8},  }  maxSet, maxSize := maxCompatibleActivities(activities)  fmt.Printf("Maximum compatible activities set: %v\n", maxSet)  fmt.Printf("Size of the maximum compatible activities set: %d\n", maxSize)  // Note: Comparing the running time of this DP algorithm with GREEDY-ACTIVITY-SELECTOR  // would depend on the implementation

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

讯飞星火,抛panic:

首先,我们需要定义一个递归式(16.2)。假设我们有一个活动集合A,其中每个活动a[i]都有一个开始时间s[i]和一个结束时间f[i]。我们可以使用以下递归式来计算最大兼容活动集的大小:

c[i, j] = max(c[i-1, j], c[k, i-1] + 1), 其中k是满足s[k] <= f[i]的最大索引。

为了生成最大兼容活动集本身,我们需要在计算c[i, j]时记录选择的活动。

以下是用Go语言实现的动态规划算法:

package mainimport ("fmt"
)func activitySelector(s, f []int) (int, []int) {n := len(s)c := make([]int, n+1)activitySet := make([]int, n+1)for i := 1; i <= n; i++ {activitySet[i] = ic[i] = c[i-1]for k := 0; k < i; k++ {if s[k] <= f[i-1] && c[k]+1 > c[i] {c[i] = c[k] + 1activitySet[i] = k}}}selectedActivities := make([]int, c[n])j := nfor i := c[n]; i > 0; i-- {selectedActivities[i-1] = activitySet[j]j = activitySet[j] - 1}return c[n], selectedActivities
}func main() {s := []int{1, 3, 0, 5, 3, 5, 6, 8, 8, 2, 12}f := []int{4, 5, 6, 7, 9, 9, 10, 11, 12, 14, 16}maxSize, selectedActivities := activitySelector(s, f)fmt.Println("最大兼容活动集的大小:", maxSize)fmt.Println("最大兼容活动集:", selectedActivities)
}

这个算法的时间复杂度为O(n2),其中n是活动的数量。与GREEDY-ACTIVITY-SELECTOR算法相比,动态规划算法可以在O(n2)时间内找到最大兼容活动集,而贪心算法只能找到最大兼容活动集的一个近似解。

在这里插入图片描述

在这里插入图片描述

360智脑,抛panic:

以下是一个使用Go语言实现的动态规划算法,用于解决活动选择问题:

package main import "fmt"type activity struct {start int finish int 
}func activitySelection(input []activity) []activity {n := len(input)if n == 0 {return []activity{}}// 初始化dp数组 dp := make([][]bool, n)for i := range dp {dp[i] = make([]bool, n)}// 初始化最大兼容活动集 maxCompatibleSet := make([]activity, 0, n)// 从第一个活动开始遍历 for i := 0; i < n; i++ {// 将当前活动添加到最大兼容活动集中 maxCompatibleSet = append(maxCompatibleSet, input[i])// 从第二个活动开始遍历 for j := i + 1; j < n; j++ {// 如果当前活动和最大兼容活动集中的最后一个活动不冲突 if input[j].start >= maxCompatibleSet[len(maxCompatibleSet)-1].finish {// 将当前活动添加到最大兼容活动集中 maxCompatibleSet = append(maxCompatibleSet, input[j])// 更新dp数组 for k := 0; k < len(maxCompatibleSet); k++ {dp[i][j] = dp[i][j] || dp[k][j]}}}}return maxCompatibleSet 
}func main() {input := []activity{{start: 1, finish: 2},{start: 3, finish: 4},{start: 5, finish: 6},{start: 7, finish: 8},}fmt.Println(activitySelection(input))
}

在这个算法中,我们首先将输入的活动按照公式(16.1)排序。然后,我们使用一个二维布尔数组dp来记录每个活动是否可以添加到最大兼容活动集中。我们从第一个活动开始遍历,将每个活动添加到最大兼容活动集中,并更新dp数组。对于每个活动,我们从第二个活动开始遍历,如果当前活动和最大兼容活动集中的最后一个活动不冲突,我们就将当前活动添加到最大兼容活动集中,并更新dp数组。最后,我们返回最大兼容活动集。

这个算法的时间复杂度是O(n^2),其中n是活动的数量。相比之下,贪婪活动选择算法的时间复杂度是O(n),因为它只需要遍历一次活动。所以,在活动数量较多的情况下,贪婪活动选择算法的运行时间会更短。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

智谱清言,代码不能运行:

根据您的描述,我们需要解决的是一个活动选择问题,这是一个经典的动态规划问题。给定一组活动,每个活动都有开始时间和结束时间,我们的目标是选择尽可能多的互不冲突的活动。

首先,我们定义状态 c[i,j] 为在前 i 个活动中选择结束时间不超过 j 的最大活动集合的大小。因此,对于每个活动 i 和每个时间 j,我们需要计算 c[i,j]

递归式 (16.2) 可能指的是这样的状态转移方程:

\[ c[i][j] = \max(c[i-1][j], c[i-1][j-a_i[1]] + 1) \]

其中,a_i[1] 是活动 i 的开始时间,这个方程的含义是:选择当前活动 i,则 c[i][j] 等于之前不选择当前活动 i 时的最大兼容活动集大小 c[i-1][j],加上当前活动 i 被选中的情况 c[i-1][j-a_i[1]] + 1
在Go语言中实现这个动态规划算法可能如下所示:

package main
import ("fmt"
)
// activity 表示一个活动,包含开始时间和结束时间
type activity struct {start, end int
}
// activitySelection 实现活动选择算法
func activitySelection(activities []activity) []int {n := len(activities)// dp[i][j] 表示前 i 个活动中,结束时间不超过 j 的最大活动集大小dp := make([][]int, n+1)for i := range dp {dp[i] = make([]int, j)}// 初始化 dp 表,选择不选任何活动的情况for j := range dp[0] {dp[0][j] = 0}// 按结束时间对活动进行排序sort.Slice(activities, func(i, j int) bool {return activities[i].end < activities[j].end})// 动态规划填表for i, a := range activities {for j := a.end; j < len(dp[i]) && j >= a.start; j++ {dp[i+1][j] = max(dp[i][j], dp[i][j-a.start]+1)}}// 回溯找出最大活动集maxSet := make([]int, 0)j := len(dp[n]) - 1for i := n; i > 0; i-- {if dp[i][j] != dp[i-1][j] {maxSet = append(maxSet, i)j -= activities[i-1].start}}return maxSet
}
// max 返回两个整数中的最大值
func max(a, b int) int {if a > b {return a}return b
}
// main 函数用于测试活动选择算法
func main() {activities := []activity{{1, 2},{3, 4},{0, 6},{5, 7},{3, 9},{5, 10},{6, 11},{8, 12},}maxActivities := activitySelection(activities)fmt.Println("Selected activities:", maxActivities)
}

以上是使用动态规划解决活动选择问题的Go语言代码实现。为了比较与GREEDY-ACTIVITY-SELECTOR算法的运行时间,我们需要知道GREEDY-ACTIVITY-SELECTOR的具体实现或者其时间复杂度。不过,从动态规划的视角来看,活动选择问题通常可以用贪心算法或者动态规划算法解决,其中动态规划算法的时间复杂度通常较高,为O(n^2),而贪心算法的时间复杂度通常较低,但可能不总是能得到最优解。在实际应用中,算

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

天工,代码不能运行:

动态规划算法通常通过存储子问题的解决方案来避免重复计算,从而提高算法效率。对于活动选择问题,我们可以使用动态规划来避免像贪心算法那样可能的选择错误。

动态规划算法的核心在于状态设计和状态转移方程。在这个问题中,状态可以表示为 c[i, j],表示活动集合 {a_i, a_{i+1}, ..., a_j} 中的最大兼容活动数。

状态转移方程为:

c[i, j] = max(c[i, k] + c[k+1, j] + 1) (对所有的 i ≤ k < j 求解)

这里的 + 1 是因为当 a_k{a_i, a_{i+1}, ..., a_{k-1} 兼容,并且 {a_{k+1}, ..., a_j} 也与 a_k 兼容时,a_k 应该被包括在内。

最后,我们需要回溯以找到构成最大兼容活动集的活动。

以下是使用 Go 语言实现的动态规划算法:

package mainimport "fmt"type Activity struct {startTime intendTime   int
}func compare(a, b *Activity) bool {if a.endTime == b.endTime {return a.startTime < b.startTime}return a.endTime < b.endTime
}func findMaxCompatibleActivities(activities []*Activity) (int, [][]*Activity) {sort.Slice(activities, func(i, j int) bool { return compare(activities[i], activities[j]) })const n = len(activities)dp := make([][]int, n)for i := range dp {dp[i] = make([]int, n)}// Base case: no activities or only one activitydp[0][0] = 1if n > 1 {dp[0][1] = 1}var maxCompatibility intfor i := 1; i <= n; i++ {maxCompatibility = 0for j := 0; j < i; j++ {if dp[j][i-1] > maxCompatibility {maxCompatibility = dp[j][i-1]}}dp[i][i] = maxCompatibilityif i > 1 {dp[i][i-1] = maxCompatibility}}maxSize := maxCompatibilityvar result [][]*Activityfor i := 0; i < n; i++ {for j := i + 1; j < n; j++ {if dp[i][j] == maxCompatibility {activitiesSubset := make([]*Activity, j-i)for k := 0; k < j-i; k++ {activitiesSubset[k] = activities[i+k]}result = append(result, activitiesSubset)}}}return maxSize, result
}func main() {activities := []*Activity{{startTime: 1, endTime: 4},{startTime: 2, endTime: 5},{startTime: 3, endTime: 6},{startTime: 5, endTime: 8},{startTime: 7, endTime: 9},}maxSize, subsets := findMaxCompatibleActivities(activities)fmt.Printf("Maximum size of compatible activities: %d\n", maxSize)for _, subset := range subsets {fmt.Printf("Compatible activities subset: %v\n", subset)}
}

这个实现首先对活动进行排序,然后填充动态规划表 dp,最后回溯以找到构成最大兼容活动集的活动。

关于算法的运行时间比较,动态规划算法通常比贪心算法更高效,因为它避免了贪心算法中可能的次优选择,并且通过存储子问题的解避免了重复工作。对于活动选择问题,动态规划的时间复杂度是 O(n^2),而贪心算法的时间复杂度是 O(n)。尽管贪心算法更快,但动态规划能够保证找到最优解,而贪心算法可能找不到。因此,在需要最优解的情况下,动态规划通常是更好的选择。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

灵小智:

非常抱歉,我无法为您提供关于算法设计和编程语言的帮助。作为一个自然语言处理模型,我专注于提供文本上的信息和答案,并与您进行对话。如果您有其他问题,我会很乐意为您提供帮助。

在这里插入图片描述

chatgpt,抛panic:

根据递归式(16.2),我们可以设计一个动态规划算法来解决活动选择问题。下面是用Go语言实现的代码:

package mainimport ("fmt"
)// 动态规划算法解决活动选择问题
func dynamicActivitySelector(s, f []int) ([]int, int) {n := len(s)c := make([][]int, n+2)for i := range c {c[i] = make([]int, n+2)}p := make([][]int, n+2)for i := range p {p[i] = make([]int, n+2)}for l := 3; l <= n+2; l++ {for i := 0; i <= n-l+2; i++ {j := i + l - 1k := p[i][j-1] // 初始化k为最小兼容活动索引for m := k + 1; m <= j-1; m++ { // 寻找最大兼容活动索引if f[m] <= s[j] && f[k] < f[m] {k = m}}if f[k] <= s[j] { // 如果存在兼容活动,则加入到结果集中c[i][j] = c[i][k] + c[k][j] + 1p[i][j] = k} else { // 如果不存在兼容活动,则不加入结果集中c[i][j] = c[i][j-1]p[i][j] = p[i][j-1]}}}return constructSolution(p, 0, n+1), c[0][n+1]
}// 构造最大兼容活动集
func constructSolution(p [][]int, i, j int) []int {if p[i][j] == 0 {return nil}k := p[i][j]left := constructSolution(p, i, k)right := constructSolution(p, k, j)result := append(left, k)result = append(result, right...)return result
}func main() {s := []int{0, 1, 3, 0, 5, 3, 5, 6}f := []int{0, 4, 5, 6, 7, 8, 9 ,10}maxActivitiesSet, maxSize := dynamicActivitySelector(s[1:], f[1:])fmt.Println("最大兼容活动集:", maxActivitiesSet)fmt.Println("最大兼容活动集的大小:", maxSize)
}

该代码使用动态规划算法解决活动选择问题。首先创建一个二维数组c和p,其中c[i][j]表示子问题(i,j)的最大兼容活动集的大小,p[i][j]记录构成子问题(i,j)最大兼容活动集的左侧第一个被选中的活动下标。然后按照递归式(16.2)进行计算并填表。最后根据p数组构造出最大兼容活动集。

相比于贪心算法GREEDY-ACTIVITY-SELECTOR,动态规划算法的时间复杂度为O(n^3),其中n是活动的个数。因此,在实际运行中,GREEDY-ACTIVITY-SELECTOR算法通常比动态规划算法更快。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

kimi,代码不能运行:

在活动选择问题中,我们有一个活动列表,每个活动都有一个开始时间 start[i] 和结束时间 end[i]。我们的目标是选择最大的兼容活动集,即没有两个活动重叠(即对于任意两个活动 A 和 B,如果 A 的结束时间小于或等于 B 的开始时间,则 A 和 B 兼容)。

递归式 (16.2) 定义了 c[i, j] 为在活动列表的前 j 个活动中选择的兼容活动集的最大大小,且这些活动在 start[i]end[i] 之间结束。为了设计一个动态规划算法,我们需要维护一个二维数组 c,其中 c[i][j] 表示在考虑前 j 个活动时,以第 i 个活动结束的活动集的最大大小。

以下是使用 Go 语言实现的动态规划算法:

package mainimport ("fmt"
)// Activity 结构体表示一个活动,包含开始时间和结束时间
type Activity struct {start intend   int
}// maxActivitySet 函数计算最大兼容活动集的大小并生成最大集本身
func maxActivitySet(activities []Activity) (int, []int) {n := len(activities)c := make([][]int, n)for i := range c {c[i] = make([]int, n)}// 初始化 c 数组for i := range c {c[i][i] = 1 // 单个活动本身就是一个兼容集}// 动态规划计算 c 数组for length := 2; length <= n; length++ {for i := 0; i <= n-length; i++ {j := i + length - 1if activities[i].end <= activities[j].start {// 如果活动 i 和 j 不重叠,取两者的最大兼容集c[i][j] = max(c[i][k]+1, c[k+1][j]) for k := i; k < j; k++} else {// 如果活动 i 和 j 重叠,取不包含 i 的兼容集c[i][j] = c[i+1][j]}}}// 回溯找到最大兼容集maxSize := 0maxSet := make([]int, 0)for i := 0; i < n; i++ {if c[0][i] > maxSize {maxSize = c[0][i]maxSet = make([]int, maxSize)for k := 0; k < maxSize; k++ {maxSet[k] = activities[i-k].end}}}return maxSize, maxSet
}// max 辅助函数,返回两个整数中的最大值
func max(a, b int) int {if a > b {return a}return b
}func main() {activities := []Activity{{1, 4},{2, 5},{3, 5},{4, 6},{5, 6},{6, 8},{7, 9},{8, 11},{9, 12},}size, set := maxActivitySet(activities)fmt.Printf("Max size of compatible activity set: %d\n", size)fmt.Printf("Max compatible activity set: %v\n", set)
}

在这个实现中,我们首先初始化一个二维数组 c,然后使用动态规划填充这个数组。对于每一对活动 (i, j),我们检查它们是否重叠。如果不重叠,我们尝试将活动 i 添加到以活动 j 结束的兼容集中,并更新 c[i][j]。如果活动 ij 重叠,我们直接取 c[i+1][j] 的值。最后,我们回溯 c 数组以找到最大兼容集。

GREEDY-ACTIVITY-SELECTOR 是一个贪心算法,它在每一步选择结束时间最早的活动,直到没有更多活动可以添加到当前选择的集合中。这个算法的时间复杂度是 O(n^2),因为它需要对每一对活动进行比较。

与贪心算法相比,动态规划算法的时间复杂度是 O(n^3),因为我们需要三层嵌套循环来填充 c 数组。尽管动态规划算法在最坏情况下可能比贪心算法慢,但它能够找到全局最优解,而贪心算法可能只能找到局部最优解。在实际应用中,如果活动数量不多,动态规划算法是一个很好的选择。如果活动数量很大,可能需要考虑更高效的算法,如基于排序的贪心算法,其时间复杂度为 O(n log n)。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

混元,代码不能运行:

以下是使用 Go 语言实现的一个动态规划算法,用于解决活动选择问题。该算法根据递归式 (16.2) 计算最大兼容活动集的大小 c[i, j],并生成最大集本身。输入的活动已按公式 (16.1) 排好序。

package mainimport ("fmt"
)type Activity struct {Start intEnd   int
}func activitySelection(activities []Activity) (int, []Activity) {n := len(activities)c := make([][]int, n)for i := range c {c[i] = make([]int, n)}for i := 0; i < n; i++ {c[i][i] = 1}for l := 2; l <= n; l++ {for i := 0; i <= n-l; i++ {j := i + l - 1if activities[j].Start >= activities[i].End {c[i][j] = c[i][j-1] + 1} else {c[i][j] = c[i][j-1]}}}maxSize := 0maxIndex := 0for i := 0; i < n; i++ {if c[i][n-1] > maxSize {maxSize = c[i][n-1]maxIndex = i}}result := make([]Activity, maxSize)index := maxIndexfor i := n - 1; i >= 0; i-- {if c[index][i] == c[index][i-1]+1 {result[maxSize-1] = activities[i]maxSize--index = i - 1}}return maxSize, result
}func main() {activities := []Activity{{1, 2},{3, 4},{0, 6},{5, 7},{8, 9},{5, 9},}size, maxCompatibleActivities := activitySelection(activities)fmt.Printf("The size of the maximum compatible activity set is: %d\n", size)fmt.Println("The maximum compatible activity set is:")for _, activity := range maxCompatibleActivities {fmt.Printf("Start: %d, End: %d\n", activity.Start, activity.End)}
}

GREEDY-ACTIVITY-SELECTOR 算法相比,动态规划算法的运行时间为 O(n^2),而贪心算法的运行时间为 O(n)。动态规划算法可以找到最大兼容活动集的大小以及生成最大集本身,而贪心算法只能找到最大兼容活动集的大小。在某些情况下,动态规划算法可能会比贪心算法更适用,因为它可以提供更多的信息。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

excel统计分析——裂区设计

参考资料&#xff1a;生物统计学 裂区设计&#xff08;split-plot design&#xff09;是安排多因素试验的一种方法&#xff0c;裂区设计对因素的安排有主次之分&#xff0c;适用于安排对不同因素试验精度要求不一的试验。 裂区设计时&#xff0c;先按第一因素的处理数划分主区&…

独立站营销新纪元:AI与大数据塑造个性化体验的未来

随着全球互联网的深入发展和数字化转型的不断推进&#xff0c;作为品牌建设和市场营销的重要载体&#xff0c;独立站将迎来新的发展机遇。新技术的涌现&#xff0c;特别是人工智能和大数据等技术的广泛应用&#xff0c;为独立站带来了前所未有的机遇与挑战。本文Nox聚星将和大家…

ios xcode 15 PrivacyInfo.xcprivacy 隐私清单

1.需要升级mac os系统到13 兼容 xcode 15.1 2.升级mac os系统到14 兼容 xcode 15.3 3.选择 New File 4.直接搜索 privacy 能看到有个App Privacy 5.右击Add Row 7.直接选 Label Types 8.选中继续添加就能添加你的隐私清单了 苹果官网文档Describing data use in privacy man…

springboot247人事管理系统

人事管理系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;问卷信息因为其管理内容繁杂&#xff0c;管理数量繁多导…

Redis基本使用和基础知识整理

Redis是做什么的&#xff1f; Redis是一个开源&#xff0c;内存存储的数据结构服务器&#xff0c;可用作数据库&#xff0c;高速缓存和消息队列。Redis将数据储存在内存当中 内存的特点 易失性&#xff08;在断电之后数据就没有了&#xff09;进行读取数据等IO操作的速度要比…

C语言进阶—表达式求值

隐式类型转换&#xff1a; C 的整型算术运算总是至少以缺省(默认)整型类型的精度来进行的。 为了获得这个精度&#xff0c;表达式中的字符和短整型操作数在使用之前被转换为普通整型&#xff0c;这种转换称为整型提升。 #include <stdio.h>int main() {char c 1;printf(…

Springboot 的几种配置文件形式

方式一&#xff1a;多个yml文件 步骤1&#xff1a;创建多个配置文件 application.yml #主配置文件 application-dev.yml #开发环境的配置 application-prod.yml #生产环境的配置 application-test.yml #测试环境的配置步骤2&#xff1a;applicaiton.yml中指定配置 在a…

代码随想录day13(1)栈与队列:用栈实现队列(leetcode232)

题目要求&#xff1a;使用栈实现push、pop、empty、peek&#xff08;返回队列首部元素&#xff09;。 思路&#xff1a;本题思路比较容易&#xff0c;即用两个栈模拟即可&#xff0c;pop时只需要先判断stackout栈是否为空&#xff0c;如果不空直接弹出&#xff0c;如果空就将s…

组合逻辑电路(一)(加法器)

目录 组合逻辑电路的特点及功能描述 采用SSI的组合逻辑电路的分析与设计 采用SSI的组合逻辑电路的分析 采用SII的组合逻辑电路的设计 例 例 例 常用的MSI组合逻辑电路 半加器 全加器 加法器 串行进位加法器 例 例 超前进位加法器 组合逻辑电路的特点及功能描述 小规模集成…

原生微信小程序电影购票+后台管理系统[含文档]

简介 正文获取联系方式&#xff01;❤❤❤关于JAVA/小程序/安卓/PHP/Python/C#/ASP.NET/大数据/爬虫/数据可视化都可推荐选题和提供专业的指导和支持。 【毕设源码推荐项目】基于原生微信小程序电影购票系统 适用于计算机类毕业设计&#xff0c;本系统功能完整&#xff0c;适合…

基础小白快速入门并行计算------>我们为什么要学习并行计算

什么是并行计算&#xff1f; 随着计算机的不断发展&#xff0c;我们处理的数据不断变多&#xff0c;需要更大得到处理能力、我们希望计算机有着更大更强壮的计算能力&#xff0c;由于cpu的运行能力有限&#xff0c;我们便想到了将多个cpu进行串联计算问题&#xff0c;这也就是我…

AtCoder Beginner Contest 343(A,B,C,D,E,F)

比赛链接 CE是暴力&#xff0c;D是数据结构题&#xff0c;F是线段树。这场的E比较有意思&#xff0c;其他的感觉有点水。 A - Wrong Answer 题意&#xff1a; 给你两个数 A , B A,B A,B ( 0 ≤ A , B ≤ 9 ) (0\le A,B\le 9) (0≤A,B≤9)&#xff0c;返回一个个位数&#…

如何提高项目成功率?分享20 种项目管理工具、技术和软件

本文将分享20种项目管理常用的工具、技术和软件&#xff0c;比如项目管理软件 PingCode、Worktile、Redmine、Jira、SAP、PrimaveraSystems等&#xff1b;项目计划阶段工具和技术WBS、甘特图、PERT图、风险评估矩阵等等。 项目管理是确保项目成功交付的关键&#xff0c;它涉及到…

【产品文档分类及撰写路径】

一、产品文档的分类 产品文档根据所处阶段和面相对象的差异大致可以分为三类&#xff1a; 商业需求文档 (BRD)&#xff1a;商业需求文档是面向公司高层和项目组&#xff0c;目的是为了获得资金、资源支持。市场需求文档 (MRD)&#xff1a;市场需求文档是面向运营和市场销售人员…

【重要!!退税!退税!】一年一度个人所得税综合年度汇算开始了!

目录标题 如何退税&#xff1f;2023年度个人所得税综合所得汇算清缴操作指南汇算准备标准申报 退税骗局&#xff1f;1.“您有一笔退税待领取”骗局2.“专业人员帮你多退税”骗局3.“诱导填报虚假个税信息”骗局4.“税务稽查人员联系你”骗局 如何退税&#xff1f; 2023年度个人…

2024年腾讯云优惠政策_腾讯云服务器特价购买活动入口

腾讯云优惠活动2024新春采购节活动上线&#xff0c;云服务器价格已经出来了&#xff0c;云服务器61元一年起&#xff0c;配置和价格基本上和上个月没什么变化&#xff0c;但是新增了8888元代金券和会员续费优惠&#xff0c;腾讯云百科txybk.com整理腾讯云最新优惠活动云服务器配…

网络编程作业day7

作业项目&#xff1a;基于UDP的聊天室 服务器代码&#xff1a; #include <myhead.h>//定义客户信息结构体 typedef struct magtye {char type; //消息类型char name[100]; //客户姓名char text[1024]; //客户发送聊天信息 }msg_t;//定义结构体存储…

刷题日记:面试经典 150 题 DAY5

刷题日记&#xff1a;面试经典 150 题 DAY4 125. 验证回文串28. 找出字符串中第一个匹配项的下标151. 反转字符串中的单词6. Z 字形变换68. 文本左右对齐 125. 验证回文串 原题链接 125. 验证回文串 双指针&#xff0c;一前一后&#xff0c;遇到非数字字母跳过即可 class So…

腾讯云哪款服务器最便宜划算?2024腾讯云服务器优惠价格表

腾讯云优惠活动2024新春采购节活动上线&#xff0c;云服务器价格已经出来了&#xff0c;云服务器61元一年起&#xff0c;配置和价格基本上和上个月没什么变化&#xff0c;但是新增了8888元代金券和会员续费优惠&#xff0c;腾讯云百科txybk.com整理腾讯云最新优惠活动云服务器配…

TCP三次握手四次挥手

目录 TCP报文 ☞ 标志位 TCP状态变迁图&#xff1a; 三次握手 为什么要三次握手&#xff1f; 客户端与服务端接口状态 客户端&#xff1a; 服务端&#xff1a; 第一次握手&#xff1a; 第二次握手&#xff1a; 第三次握手&#xff1a; 四次挥手&#xff1a; 四次挥…