![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法分析
Aita_ZteP
这个作者很懒,什么都没留下…
展开
-
2020-12-29 关于数组循环左移的问题(C++)
数组循环左移设将n(n>1)个整数存放到一维数组R中,设计一个算法,将R中的序列循环左移P(0<P<n)个位置,即将R中的数据由{x0,x2,…,xn-1}变换为{xP,xP+1,…,xn-1,x0,x1,…,xP-1}。算法分析:可以先将R中的前P个元素逆置,再将剩下的元素进行逆置,最后将R中的所有元素再整体做一次逆置操作即可。源代码如下:#include <iostream>using namespace std;int n;void Reverse(int原创 2020-12-29 19:33:18 · 661 阅读 · 0 评论 -
2020-12-23 实验六 动态规划算法之最大k乘积问题
最大k乘积问题问题描述:设X是一个n位十进制整数,如果将X划分为K段,则可得到K个整数,这K个整数的乘积称为X的一个K乘积。请设计算法并编程实现,对于给定的X和K,求出X的最大K乘积。输入:X,K,n输出:X的最大K乘积。源代码:#include <iostream>using namespace std;int MAX=0;void Max(int X, int K, int n,int m) { int w=1; if(K==0&&X!=0) re原创 2020-12-23 07:28:34 · 709 阅读 · 1 评论 -
2020-12-22 实验六 动态规划算法之最大子段和
最大子段和给定由n个整数(可能有负整数)组成的序列(a1,a2,…,an),最大子段和问题要求该序列形如 的最大值(1<=i<=j<=n),当序列中所有整数均为负整数时,其最大子段和为0。用分治法求解。源代码:#include <iostream>using namespace std;int MaxSubSum(int *a, int left, int right){ int sum =0; if (left==right) sum= a[left] &g原创 2020-12-22 10:58:35 · 1087 阅读 · 0 评论 -
2020-12-21 实验六 动态规划算法之计算矩阵连乘积
计算矩阵连乘积在科学计算中经常要计算矩阵的乘积。矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数。若A是一个p×q的矩阵,B是一个q×r的矩阵,则其乘积C=AB是一个p×r的矩阵。由该公式知计算C=AB总共需要pqr次的数乘。其标准计算公式为:现在的问题是,给定n个矩阵{A1,A2,…,An}。其中Ai与Ai+1是可乘的,i=1,2,…,n-1。要求计算出这n个矩阵的连乘积A1A2…An,最少的乘法次数。递归公式:请编写程序实现矩阵连乘问题的动态规划算法,自己设计不少于3组的测试数据,要求显示原创 2020-12-21 21:25:24 · 561 阅读 · 0 评论 -
2020-12-20 实验六 动态规划算法之最长公共子序列
最长公共子序列分析并掌握“最长公共子序列” 问题的动态规划算法求解方法;最长公共子序列问题:若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。原创 2020-12-20 18:55:34 · 529 阅读 · 0 评论 -
2020-12-18 算法_动态规划之0-1背包
0-1背包给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能只装入部分物品i。输入格式:共有n+1行输入:第一行为n值和c值,表示n件物品和背包容量c;接下来的n行,每行有两个数据,分别表示第i(1≤i≤n)件物品的重量和价值。输出格式:输出装入背包中物品的最大总价值。原创 2020-12-18 23:51:04 · 170 阅读 · 1 评论 -
2020-12-17 算法_动态规划之回文串问题、矩阵链相乘问题、寻宝
算法_动态规划回文串问题矩阵链相乘问题寻宝回文串问题一个字符串,如果从左到右读和从右到左读是完全一样的,比如"aba",我们称其为回文串。现在给你一个字符串,可在任意位置添加字符,求最少添加几个字符,才能使其变成一个回文串。输入格式:任意给定的一个字符串,其长度不超过1000.输出格式:能变成回文串所需添加的最少字符数。输入样例:在这里给出一组输入。例如:Ab3bdAbb输出样例:在这里给出相应的输出。例如:21源代码:#include <iostream>#i原创 2020-12-17 11:37:06 · 186 阅读 · 0 评论 -
2020-12-15 实验五 回溯法
实验五 回溯法实验目的实验环境实验内容示例程序:符号三角形问题实验题实验目的1、通过回溯法的示例程序理解回溯法的基本思想;2、运用回溯法解决实际问题进一步加深对回溯法的理解和运用;实验环境VC6.0实验内容1、分析并掌握“符号三角” 问题的回溯法求解方法;2、练习使用回溯法求解问题。示例程序:符号三角形问题符号三角问题:下面都是“-”。 下图是由14个“+”和14个“-”组成的符号三角形。2个同号下面都是“+”,2个异号下面都是“-”。n个符号。符号三角形问题要求对于给定的n,计算有原创 2020-12-15 19:09:03 · 200 阅读 · 0 评论 -
2020-12-14算法_动态规划之最大子段和
最大子段和给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。要求算法的时间复杂度为O(n)。输入格式:输入有两行:第一行是n值(1<=n<=10000);第二行是n个整数。输出格式:输出最大子段和。输入样例:在这里给出一组输入。例如:6-2 11 -4 13 -5 -2输出样例:在这里给出相应的输出。例如:20源代码:#inclu原创 2020-12-14 23:31:18 · 402 阅读 · 0 评论 -
2020-12-5 算法_回溯(八皇后问题)
在国际象棋中,皇后是最厉害的棋子,可以横走、直走,还可以斜走。棋手马克斯·贝瑟尔 1848 年提出著名的八皇后问题:即在 8 × 8 的棋盘上摆放八个皇后,使其不能互相攻击 —— 即任意两个皇后都不能处于同一行、同一列或同一条斜线上。例如:现在我们把棋盘扩展到 n×n 的棋盘上摆放 n 个皇后,请问该怎么摆?请编写程序,输入正整数 n,输出全部摆法(棋盘格子空白处显示句点“.”,皇后处显示字母“Q”,每两个字符之间空一格)。输入格式正整数 n(n>0)输出格式若问题有解,则输出全部摆法(原创 2020-12-05 23:38:07 · 457 阅读 · 0 评论 -
2020-12-04 算法_回溯(最佳调度问题)
最佳调度问题假设有n(n<=20)个任务由k(k<=20)个可并行工作的机器完成。完成任务i需要的时间为ti。 试设计一个算法,对任意给定的整数n和k,以及完成任务i 需要的时间为ti ,i=1~n。计算完成这n个任务的最佳调度,使得完成全部任务的时间最早。输入格式:输入数据的第一行有2 个正整数n和k。第2 行的n个正整数是完成n个任务需要的时间。输出格式:将计算出的完成全部任务的最早时间输出到屏幕。输入样例:在这里给出一组输入。例如:7 32 14 4 16 6 5 3输原创 2020-12-04 23:07:52 · 263 阅读 · 0 评论 -
2020-12-02 算法_回溯(0-1背包)
算法_回溯0-1背包0-1背包给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能只装入部分物品i。输入格式:共有n+1行输入:第一行为n值和c值,表示n件物品和背包容量c;接下来的n行,每行有两个数据,分别表示第i(1≤i≤n)件物品的重量和价值。输出格式:输出装入背包原创 2020-12-02 21:44:23 · 217 阅读 · 0 评论 -
2020-12-01 算法_回溯(整数拆分、666、工作分配问题)
整数拆分、666、工作分配问题整数拆分666工作分配问题整数拆分将一个正整数拆分成若干个正整数的和。输入格式:一个正整数n输出格式:若干行,每行一个等式(每个数或者等号间都有一个空格,第一个数前没有空格,最后一个数后面没有空格,数与数之间要求非降序排列)。最后一行给出解的总个数输入样例:在这里给出一组输入。例如:4输出样例:在这里给出相应的输出。例如:4 = 1 + 1 + 1 + 14 = 1 + 1 + 24 = 1 + 34 = 2 + 24源代码:#include原创 2020-12-01 21:35:54 · 430 阅读 · 0 评论 -
2020-11-30 贪心算法——多机调度问题
多机调度问题利用贪心法设计算法求解如下问题:要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。约定,每个作业均可在任何一台机器上加工处理,但未完工前不允许中断处理。作业不能拆分成更小的子作业。这个问题是一个NP完全问题,到目前为止还没有一个有效的解法。对于这一类问题,用贪心选择策略有时可以设计出较好的近似算法。可以考虑以下的贪心策略:(1)最长处理时间作业优先的贪心选择策略。(2)最短处理时间作业优先的贪心选择策略。(3)作业到达时间优先的贪心选择策略。假设原创 2020-11-30 13:11:34 · 1778 阅读 · 3 评论 -
2020-11-29 算法_枚举
算法_枚举1 穷举问题-搬砖2 百鸡问题扩展-N鸡问题3 输出全排列4 梅森数5 换硬币1 穷举问题-搬砖某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法?输入格式:输入在一行中给出一个正整数n。输出格式:输出在每一行显示一种方案,按照"men = cnt_m, women = cnt_w, child = cnt_c"的格式,输出男人的数量cnt_m,女人的数量cnt_w,小孩的数量cnt_c。请注意,等号的两侧各有一个空格,逗号原创 2020-11-29 22:29:17 · 183 阅读 · 0 评论 -
2020-11-28 算法_绪论
算法_绪论1 办事大厅排队2 利用STL比较数据大小并排序3 跳一跳4 排序5 求前缀表达式的值1 办事大厅排队在郑州大学综合办事大厅,每天陆陆续续有很多人来排队办事。现在你能否写程序帮助老师时刻了解当前办理业务的情况。输入格式:第一行一个数字N,表示排队信息或者查询信息条目的数量。以下N行,每行的内容有以下3种情况(1) in name 表示名字为name的人员新来到办事大厅,排在队伍的最后。(in和name间存在一个空格,name是名字对应字符串,长度不超过10)。(2) out原创 2020-11-28 21:56:43 · 162 阅读 · 0 评论 -
2020-11-27 PTA算法_递归部分题目和代码
算法_递归1.本题目要求读入1个正整数n,然后编写递归函数reverse(int n)实现将该正整数逆序输出。输入格式:输入在一行中给出1个正整数n。输出格式:对每一组输入,在一行中输出n的逆序数。输入样例:12345输出样例:54321源代码:#include <iostream>using namespace std;int s=0;void reverse(int n){ if(n>0) { s=n%10;原创 2020-11-27 22:52:33 · 759 阅读 · 0 评论 -
2020-11-26 最优分解问题
最优分解问题问题描述:设n是一个正整数,要求将n分解为若干互不相同的自然数之和,且这些自然数的乘积最大。输入:正整数n输出:计算的最大乘积。如输入10,则输出30.提示:若a+b=const ,则a-b的绝对值越小,ab值越大。贪心策略:将n分成从2开始的连续自然数之和,如果最后剩下一个数,则将此数在后项优先的方式下均匀地分给前面各项。源代码:#include<iostream>#include<algorithm>#include<cstdio>us原创 2020-11-26 22:26:18 · 496 阅读 · 2 评论 -
2020-11-25关于最优服务次序问题与多处最优服务次序问题
关于最优服务次序问题与多处最优服务次序问题1. 最优服务次序问题。问题描述:设有n个顾客同时等待一项服务,顾客i需要的服务时间为ti,(1<=i<=n)。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?(平均等待时间是n个顾客等待服务时间总和除以n)输入:第一行为一个正整数n,表示有n个顾客第二行为n个正整数,表示n个顾客需要的服务时间输出:最小平均等待时间。源代码:#include <iostream>#include <algorithm>原创 2020-11-25 22:11:15 · 488 阅读 · 0 评论 -
2020-11-23 PTA算法_贪心算法部分习题及代码
贪心算法部分习题及代码1 装箱问题2 月饼3 最优合并问题4 看电影5 喷水装置一级目录1 装箱问题假设有N项物品,大小分别为s1、s2、…、si、…、sN,其中si为满足1≤si≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。输入格式:输入第一行给出物品个数N(≤1原创 2020-11-23 23:40:15 · 1100 阅读 · 0 评论 -
2020-11-22 实验三 递归与分治
实验三 递归与分治实验目的:实验环境:实验内容:心得体会:实验目的:理解递归算法的思想和递归程序的执行过程,并能熟练编写递归程序。掌握分治算法的思想,对给定的问题能设计出分治算法予以解决。实验环境:VC6.0实验内容:Fibonacci数列无穷数列1,1,2,3,5,8,13,21,34,55,……,称为Fibonacci数列。它可以递归地定义为:第n个Fibonacci数可递归地计算如下:int fibonacci(int n){if (n <= 1) return 1原创 2020-11-22 10:37:39 · 1688 阅读 · 0 评论 -
2020-11-20 实验二 枚举与递推
实验二 枚举与递推实验目的:实验环境:实验内容:心得体会实验目的:理解枚举法的思想及程序的执行过程;理解递推算法的思想;能较熟练地编写枚举、递推程序,对给定的问题能设计出相应算法予以解决。实验环境:VC6.0实验内容:1.由0到4五个数字,组成5位数,每个数字用一次,但十位和百位不能为3(当然万位不能为0),输出所有可能的五位数。源代码:#include <iostream>#include <algorithm>using namespace std;原创 2020-11-20 11:41:33 · 424 阅读 · 0 评论 -
2020-11-18 实验一 算法设计基础
实验一 算法设计基础实验目的:实验环境:实验内容:心得体会实验目的:掌握算法设计的基本步骤,并能进行时间复杂度分析。掌握不同算法时间复杂度比较方法。实验环境:VC6.0实验内容: 分别用穷举法和欧几里德算法实现求两个整数的最大公约数,并比较算法的效率。源代码:#include <iostream>#include <ctime>using namespace std;void qiongju(int a,int b){ i原创 2020-11-18 23:49:29 · 225 阅读 · 0 评论