Skip to content

Mengxun326/AlgorithmDesign

Repository files navigation

安徽理工大学算法设计与分析课程设计项目

信息安全 23-1 王智杰

本仓库包含算法设计与分析课程设计中 6 个题目的实现代码,所选题目分别为 7、10、15、16、18、23 号题目。以下是各题目的详细要求与说明。

7. 第 k 小的元素(分治算法)

题目描述

在包含 n 个元素的整数序列中,查找并输出第 k 小的元素。需基于分治思想设计程序,要求算法时间复杂度为 O(n)。

输入

  • 第 1 行:输入整数 n (0 < n <= 100),表示整数的数量。

  • 第 2 行:依次输入 n 个整数。

  • 第 3 行:输入整数 k (k <= n)。

输出

输出第 k 小的元素。

示例

输入:
6
20 5 -6 9 0 7
3

输出:
5

代码实现

对应代码文件:mainwindow.cpp 中的 on_pushButton_1_clicked 函数。

10. 选择问题(分治算法)

题目描述

对于给定的有 n 个元素的数组 a[0:n - 1],要求从中找出第 k 小的元素。

输入

输入有多组测试例。对每一个测试例:

  • 第 1 行:输入整数 m 和 k (1 ≤ k < n ≤ 100)。

  • 第 2 行:输入 n 个整数。

输出

第 k 小的元素。

示例

输入:
5 2
3 9 4 1 6

输出:
3

代码实现

对应代码文件:mainwindow.cpp 中的 on_pushButton_2_clicked 函数。

15. 数字串分解(动态规划)

题目描述

设有一个长度为 X 的数字字符串,要求使用 Y 个乘号将它分成 Y + 1 个子数字串,找出一种方法,使得这 Y + 1 个部分的乘积最大。

输入

  • 第 1 行:输入 2 个自然数 X,Y(6 ≤ X ≤ 10,1 ≤ Y ≤ 6)。

  • 第 2 行:输入一个长度为 X 的数字字符串。

输出

输出所求得的最大乘积(一个自然数)。

示例

输入:
6 3
310143

输出:
3720

代码实现

对应代码文件:mainwindow.cpp 中的 on_pushButton_3_clicked 函数。

16. 滑雪(动态规划)

题目描述

在一个由二维数组表示的区域中,每个数字代表点的高度。一个人可以从某个点滑向上、下、左、右相邻的四个点之一,当且仅当高度减小。需要找出该区域中最长的滑坡长度。

输入

  • 第 1 行:输入区域的行数 R 和列数 C (1 ≤ R,C < 100) 。

  • 接下来 R 行:每行有 C 个整数,代表高度 h,0 ≤ h ≤ 10000。

输出

最长滑行区域的长度。

示例

输入:
5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

输出:
25

代码实现

对应代码文件:mainwindow.cpp 中的 on_pushButton_4_clicked 函数。

18. 马拦过河卒(动态规划)

题目描述

棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走规则为可以向下、或者向右。同时棋盘上某一点有对方的马,马所在点和所有跳跃一步可达的点为对方马的控制点,卒不能通过这些控制点。需要计算卒从 A 点能够到达 B 点的路径的条数。

输入

输入 n、m 和 C 点(马的位置)的坐标。

输出

从 A 点能够到达 B 点的路径的条数。

示例

输入:
8 6 0 4

输出:
1617

代码实现

对应代码文件:mainwindow.cpp 中的 on_pushButton_5_clicked 函数。

23. 安排工作以达到最大收益(贪心算法)

题目描述

有 n 个工作和 m 个工人,给定三个数组:difficulty 表示工作难度,profit 表示工作收益,worker 表示工人能力(工人只能完成难度小于等于其能力的工作)。每个工人最多安排一个工作,一个工作可被完成多次。需要返回把工人分配到工作岗位后所能获得的最大利润。

示例

输入:
5 4
2 10
4 20
6 30
8 40
10 50
4
5
6
7

输出:
100

解释:
difficulty = [2,4,6,8,10], profit = [10,20,30,40,50], worker = [4,5,6,7]
工人被分配的工作难度是 [4,4,6,6] ,分别获得 [20,20,30,30] 的收益,总收益为 100。

代码实现

对应代码文件:mainwindow.cpp 中的 on_pushButton_6_clicked 函数。

本仓库旨在展示针对上述题目的算法实现,欢迎大家查阅和交流。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published