![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法程序设计
文章平均质量分 90
君无戏言。
这个作者很懒,什么都没留下…
展开
-
算法程序设计 之 胖男孩问题(7/8)
用f[i][j][k]表示三个字符串到达[i][j][k]位置时的最长字符,如果ijk位置的字符相同,从[i-7][j-7][k-7]的位置开始循环,求出此间最长公共子序列,再加上当前的字符即可。(2)当A[i-1]==B[j-1]&&B[j-1]==C[l-1]时(A,B,C分别表示三个字符串),f[i][j][l]就等于A的前i-1个字符,B的前j-1个字符,C的前l-1个字符组成的最长公共子序列+1,即f[i][j][l]=f[i-1][j-1][l-1]+1。= C[i], 所以C是S2={1…原创 2023-06-21 13:06:43 · 170 阅读 · 0 评论 -
算法程序设计 之 装载问题(6/8)
当搜索到达一个扩展结点时,一次性扩展它的所有孩子然后将满足约束条件且最小耗费函数£目标函数限界的孩子,插入活结点表中最后从活结点表中取下一结点同样扩展,直到找到所需的解或活动结点表为空为止。//bestE的作用是:结束while循环后,bestE指向最优解的叶子节点,然后通过bestE->parent找到装入了哪些物品。回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。//不要忘记更新最新节点的值。原创 2023-06-21 12:58:40 · 374 阅读 · 0 评论 -
算法程序设计 之 背包问题(5/8)
cout << "装入物品" << i+1 << "的重量为 " << w[num] << " 价值为 " << v[num] << " 装入百分之" << w1*100 << endl;cout << "装入物品" << i+1 << "的重量为 " << w[num] << " 价值为 " << v[num] << " 完整装入" << endl;//V[i - 1][j]表示没有装第i个物品, V[i - 1][j - w[i]] + v[i] 表示装了第i个物品再考虑考虑第i-1到第n个物品。原创 2023-06-21 12:56:51 · 887 阅读 · 0 评论 -
算法程序设计 之 最长公共子序列(4/8)
例如X={A,B,C,B,D,A,B},Y={C,B,C,E,D,B},则{B,C,D,B}是X和Y的公共子序列,当然{B,C},{B,C,D}等也都是X和Y的公共子序列。若给定序列X={x1,x2,...,xm},Z={z1,z2,...,zk},若Z是X的子序列,当且仅当存在一个严格递增下标序列{i1,...,ik},使得对于所有j=1,2,...,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。原创 2023-06-21 12:48:31 · 303 阅读 · 0 评论 -
算法程序设计 之 矩阵连乘(3/8)
个相互独立的子问题的时候我们常用分治法来解决,但是当这些子问题不全相互独立的时候再用分治法就会多次重复计算子问题,造成资源的浪费,这个时候就用动态规划法,就是要划分出各种子问题,这些子问题的求法和原问题一模一样,我们可以直接利用求解好的子问题对原问题进行求最优。我的思路是首先我们知道矩阵连乘的条件:第一个矩阵的列等于第二个矩阵的行,此时两个矩阵是可乘的,并且我们知道多个矩阵连乘的结果矩阵,其行列等于第一个矩阵的行和最后一个矩阵的列。, pn-1* pn,求给定矩阵链的最优计算次序使得所需要的数乘次数最少。原创 2023-06-21 12:45:02 · 264 阅读 · 0 评论 -
算法程序设计 之 循环赛日程表(2/8)
//填第二组的空 m+i-m。//(m+i)填第一组的空。设有n个运动员要进行网球循环赛。(3)当n是偶数时,循环赛进行n-1天,n为奇数时,循环赛进行n天。printf ( "得到的循坏赛日程表为:\n" );printf ( "请输入参赛人数:" );(1)每个选手必须与其他n-1个选手各赛一次;理解并掌握分治算法的基本思想和设计步骤。(2)每个选手一天只能赛一次;原创 2023-06-21 12:40:13 · 412 阅读 · 0 评论 -
算法程序设计 之 模糊数字、真假银币(1/8)
助手想跟张三开一个玩笑,只告诉他每次称重的方案和天平的状态,但是不告诉他哪个是假币,假币比真币轻还是重。每次称重的结果用3个以空格隔开的字符串表示:天平左边放置的银币标号,天平右边放置的银币标号,以及平衡状态。另外,每次称重天平左右的银币数总是相等的。输出:每组测试样例的结果输出占一行,第一个数字表示满足条件的编码个数,后面按升序输出所有满足条件的编码,数字与数字之间用空格隔开。输出:每组测试数据的输出占一行,输出假银币的标号,并指明它比真银币轻还是重,轻则输出light,重则输出heavy。原创 2023-06-21 12:36:22 · 982 阅读 · 0 评论 -
算法程序设计 之 胖男孩问题心得体会(8/8)
本文主要是介绍,用动态规划法求解三个序列的最长公共子序列问题。动态规划法的两大基本要素即最优子结构和重叠子问题。最优子结构就是问题的最优解包含其子问题的最优解,其特点为自底向上。重叠子问题就是少量的子问题被重复解决多次。值得注意的是,贪心算法的基本要素也包含最优子结构,但是其与动态规划法的不同在于其基本要素还包含贪心选择,而动态规划法还包含重叠子问题。通俗的讲,动态规划法的主要特点是前一阶段为后阶。...原创 2022-06-20 20:17:18 · 955 阅读 · 0 评论