- 博客(5)
- 资源 (6)
- 收藏
- 关注
c++ cylinder类解决油桶问题
某工厂使用一种圆柱形的铁桶来运输色拉油,但是关于该油桶的容量已经模糊,现在工人们测得了油桶直径和高(由键盘输入),请帮工人们计算一下油桶容量和制造该油桶需要的铁皮面积。
注意这个油桶是有盖的。铁皮的厚度忽略不计。
请设计一个类cylinder,该类具有私有成员 r和h,r表示半径,h表示高。该类还有3个公有成员,请根据给出的代码部分,分析并设计公有函数。
2020-04-20
python矩阵连乘(动态规划)
【问题描述】使用动态规划算法解矩阵连乘问题,具体来说就是,依据其递归式自底向上的方式进行计算,在计算过程中,保存已子问题答案,每个子问题只解决一次,在后面计算需要时只要简单查一下得到其结果,从而避免大量的重复计算,最终得到多项式时间的算法。
【输入形式】在屏幕上输入第1个矩阵的行数和第1个矩阵到第n个矩阵的列数,各数间都以一个空格分隔。
【输出形式】矩阵m,其中m(i,j)中存放的是:计算A[i:j](其中1<=i<=j<=n)所需的最少数乘次数。
矩阵s,其中s[i][j]记录了断开的位置,即最优的加括号方式应为(A[i:s[i][j]])*(A[s[i][j]+1:j])。
矩阵连乘A1...An的最优计算次序。
【样例1输入】
30 35 15 5 10 20 25
【样例1输出】
[[ 0 15750 7875 9375 11875 15125]
[ 0 0 2625 4375 7125 10500]
[ 0 0 0 750 2500 5375]
[ 0 0 0 0 1000 3500]
[ 0 0 0 0 0 5000]
[ 0 0 0 0 0 0]]
[[0 1 1 3 3 3]
[0 0 2 3 3 3]
[0 0 0 3 3 3]
[0 0 0 0 4 5]
[0 0 0 0 0 5]
[0 0 0 0 0 0]]
((A1(A2A3))((A4A5)A6))
【样例说明】
输入:第1个矩阵的行数和第1个矩阵到第n个矩阵的列数,以空格分隔。
输出:矩阵m,s,和矩阵连乘的最优计算次序。
2020-04-20
python求最大子段和(分冶递归法)
【问题描述】使用分治递归算法解最大子段和问题,具体来说就是,将序列分为长度相等的左右两段,分别求出这两段的最大子段和,包含左右部分子段的最大子段和,求这三种情况得到的最大子段和的最大值。
【输入形式】在屏幕上输入一个序列元素,包含负整数、0和正整数。
【输出形式】序列的最大子段和,及得到最大子段和时的起始和终止编号。
【样例1输入】
-2 11 -4 13 -5 -2
【样例1输出】
20
2
4
【样例说明】
输入:6个数,元素间以空格分隔。
输出:序列的最大子段和20,得到最大子段和时的起始编号为2,终止编号为4。
2020-04-20
python求最大子段和(动态规划法)
【问题描述】使用分治递归算法解最大子段和问题,具体来说就是,将序列分为长度相等的左右两段,分别求出这两段的最大子段和,包含左右部分子段的最大子段和,求这三种情况得到的最大子段和的最大值。
【输入形式】在屏幕上输入一个序列元素,包含负整数、0和正整数。
【输出形式】序列的最大子段和,及得到最大子段和时的起始和终止编号。
【样例1输入】
-2 11 -4 13 -5 -2
【样例1输出】
20
2
4
【样例说明】
输入:6个数,元素间以空格分隔。
输出:序列的最大子段和20,得到最大子段和时的起始编号为2,终止编号为4。
2020-04-20
python求最长公共子序列(动态规划)
【问题描述】使用动态规划算法解最长公共子序列问题,具体来说就是,依据其递归式自底向上的方式依次计算得到每个子问题的最优值。
【输入形式】在屏幕上输入两个序列X和Y,序列各元素数间都以一个空格分隔。
【输出形式】矩阵c,其中c[i,j]中存放的是:序列Xi = {x1, ..., xi}和序列Yj = {y1, ..., yj}的最长公共子序列的长度。序列X和Y的最长公共子序列。
【样例1输入】
A B C B D A B
B D C A B A
【样例1输出】
[[0 0 0 0 0 0 0]
[0 0 0 0 1 1 1]
[0 1 1 1 1 2 2]
[0 1 1 2 2 2 2]
[0 1 1 2 2 3 3]
[0 1 2 2 2 3 3]
[0 1 2 2 3 3 4]
[0 1 2 2 3 4 4]]
BCBA
【样例1说明】
输入:第一行输入序列X的各元素,第二行输入序列Y的各元素,元素间以空格分隔。
输出:矩阵c,和序列X和Y的最长公共子序列。
2020-04-20
python线性时间内寻找元素(递归与分治)
【问题描述】每次都是优化选出一个元素(分组后的中位数)为划分基准,在线性时间内寻找第i小元素。提示:分组时的组的个数为n/5的向下取整;分组后的中位数取第(num_group/2向上取整)小的元素。
【输入形式】在屏幕上输入若干整数,各数间都以一个空格分隔。再输入要寻找的元素是数组从小到大顺序中第几个位置。
【输出形式】第一次划分基准元素,和数组从小到大顺序中要寻找的那个位置的元素。
【样例1输入】
2 9 8 0 7 10 1 12 3 14 5 13 6 11 4
3
【样例1输出】
7
2
【样例1说明】
输入:15个整数,以空格分隔。要寻找第3小元素。
输出:7表示第一划分基准元素为7,2表示第3小元素为2。
2020-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人