算法分析与设计
阿木Lynn
这个作者很懒,什么都没留下…
展开
-
动态规划——序列组成的子段和的最大值
问题给定由n个整数组成的序列a1,a2,…,an,求该序列组成的子段和的最大值。(分别用分治法和动态规划法实现)方法分治法#include<stdlib.h> #include<stdio.h>#define m 6int MaxSubSum(int *a,int left,int right){ int sum=0,center,leftsum,rightsum,s1,lefts,i,s2,rights; if(left==right)//原创 2021-01-27 15:25:12 · 702 阅读 · 0 评论 -
动态规划——最长公共子序列
问题给定两个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最长公共子序列。要求:输出最优值和最优解。方法#include<stdlib.h> #include<stdio.h> #define m 7#define n 6int LCSLength(char *x,char *y,int c[m][n],int b[m][n])//计算最长公共子序列//c[i][j]存储两序列最长公共子序列长度,b[i][j]记录c[i][j]的值原创 2021-01-27 15:19:39 · 355 阅读 · 0 评论 -
动态规划——矩阵连乘问题
问题给定n个矩阵{A1,A2,……,An},其中Ai与Ai+1是可乘的,i=1,2,……,n-1.考察这n个矩阵的连乘积A1A2……An,找出计算量最小的计算次序。方法动态规划#include<stdlib.h> #include<stdio.h> #define N 100void MatrixChain(int p[N+1],int n,int m[N+1][N+1],int s[N+1][N+1]){ int i,r,j,k,t; fo原创 2021-01-27 15:15:33 · 348 阅读 · 0 评论 -
分治法——线性时间选择问题
问题线性时间选择问题:给定线性序集中n个元素和一个整数k(k>=1而且k<=n),要求在线性时间内找出这n个元素中第k小的元素。方法随机快速排序#include <stdio.h>#include <stdlib.h>int main(){ int a[100],n,k,i,t,j;//定义变量 scanf("%d %d",&n,&k);//输入数组大小n,整数k for(i=0;i<n;i++)//循原创 2021-01-27 15:09:41 · 664 阅读 · 0 评论 -
分治策略——棋盘覆盖问题
问题用分治法设计一个求解棋盘覆盖问题的算法。代码#include <stdio.h>#include <stdlib.h>int chess[10][10],number;void chessboard(int r,int c,int x,int y,int size){ int s,t,tr,tc;//定义变量 if(size==1) return; s=size/2; t=++number; tr=r+s原创 2021-01-27 15:02:44 · 243 阅读 · 0 评论 -
递归与分治策略——大整数乘法问题
问题设X和Y都是n位的十进制大整数,计算它们的乘积XY。代码#include <stdio.h>#include <stdlib.h> int count(int x)//count函数求位数{ int i,s=0; for(i=1;;i++) { if(x/(int)pow...原创 2018-12-18 14:26:06 · 974 阅读 · 0 评论 -
递归与分治策略——众数问题
问题给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。对于给定的由n个自然数组成的多重集S,计算S的众数及其重数。代码排序法#include <stdio.h>#include <stdlib.h> int main(){ ...原创 2018-12-18 14:16:49 · 2086 阅读 · 0 评论 -
递归与分治策略——金块问题
问题金块问题: 一个老板有一袋金块。每个月将有两名雇员会因其优异的表现分别被奖励一个金块。按规矩,排名第一的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。根据这种方式,除非有新的金块加入袋中,否则第一名雇员所得到的金块总是比第二名雇员所得到的金块重。如果有新的金块周期性的加入袋中,则每个月都必须找出最轻和最重的金块。假设有一台比较重量的仪器,我们希望用最少的比较次数找出最轻和最...原创 2018-12-18 13:50:32 · 3603 阅读 · 0 评论 -
递归与分治策略——找峰顶问题
问题:找峰顶问题,众数问题给定含有n个不同元素的数组L=&amp;amp;lt;x1,x2,…,xn&amp;amp;gt;,如果L中存在xi,使得x1&amp;amp;lt;x2&amp;amp;lt;…&amp;amp;lt;xi-1xi+1&amp;amp;gt;…&amp;amp;gt;xn ,则称L是单峰序列,并称xi是L的峰顶。假设L是单峰的,设计一个算法找到L的峰顶,并从理论原创 2018-12-18 13:13:37 · 2959 阅读 · 0 评论 -
最多约数问题
算法分析与设计——实验一:算法复杂性分析问题:最多约数问题:正整数x的约数是能整除x的正整数。正整数x 的约数个数记为div(x)。例如,1,2,5,10 都是正整数10 的约数,且div(10)=4。设a 和b 是2 个正整数,a≤b,找出a和b之间约数个数最多的数x及其最多约数个数。方法代码问题:最多约数问题:正整数x的约数是能整除x的正整数。正整数x 的约数个数记为div(x)。例如,1,...原创 2018-12-17 22:39:14 · 6481 阅读 · 1 评论