当前位置: 首页 > news >正文

源码交易平台网站源码数据分析培训班

源码交易平台网站源码,数据分析培训班,网站的建设目标文档,川畅互联咨询 网站建设目录 一、最大子段和 1、什么是最大子段和 2、暴力枚举 3、分治法 4、动态规划 二、最长公共子序列 1、什么是最长公共子序列 2、暴力枚举法 3、动态规划法 4、完整代码 一、最大子段和 1、什么是最大子段和 子段和就是数组中任意连续的一段序列的和,而…

目录

一、最大子段和

1、什么是最大子段和

2、暴力枚举

3、分治法

4、动态规划

二、最长公共子序列

1、什么是最长公共子序列

2、暴力枚举法

3、动态规划法

4、完整代码 


 

一、最大子段和

1、什么是最大子段和

        子段和就是数组中任意连续的一段序列的和,而最大子段和就是寻找子段和里最大的一个值。下面的解释中S[l,r]会用来表示l到r的子段和,l和r分别表示左值和右值。

        最大子段和一般有三种解决方案:暴力枚举法分治法动态规划法。下面将逐个介绍。

758a27854af049a2a71061694f22f443.png

2、暴力枚举

        暴力枚举就是遍历所有的子段和,寻找最大的子段和,时间复杂度eq?O%28n%5E3%29 。相对无脑,直接贴上代码。

    //暴力枚举法public static int maxsize_violate(ArrayList<Integer>arr,int left, int right){int max=-99999999;for(int i=left;i<=right;i++){int sum=0;for(int j=i;j<=right;j++){for(int k=i;k<=j;k++){sum+=arr.get(k);  //最大值来源}if(sum>max)max=sum;sum=0;}}return max;}

3、分治法

        将每个问题分解为三个小问题,左一半的子段和,右一半的子段和,(必须)跨区域的子段和。

        伪代码如下,可以看到左子段和与右子段和都是递归求解(3、4),跨区域的一定是左右两个子段和最大值的和(5、6、7),最后选择左子段和、右子段和、跨域子段和中最大的子段和(8、9)。

52b99b166ac14860a4ebc9626c2891af.png

        完整代码:

    //分治法public static int maxsize(ArrayList<Integer>arr, int left, int right){int sum=0,midSum=0,leftSum=0,rightSum=0;int center,s1,s2,lefts,rights;//左右相等,返回左值if (left==right){    sum=arr.get(left);}//否则,分治法else {center=(left+right)/2;leftSum=maxsize(arr,left,center);         //left,l+r/2     //左区间最大值rightSum=maxsize(arr,center+1,right);     //l+r/2+1,right  //右区间最大值//后面都是在计算跨区域最大值(必须跨区域),一定是左区间贴近边界的最大值加右区间贴近边界的最大值相加。s1=0;lefts=0;                             //s1存左侧区间最大值,lefts作为tempfor (int i=center;i>=left;i--){lefts+=arr.get(i);if (lefts>s1){s1=lefts;}}s2=0;rights=0;                             //s2存右侧区间最大值,rights作为temp               for (int j=center+1;j<=right;j++){rights+=arr.get(j);if (rights>s2){s2=rights;}}midSum=s1+s2;                              //中间跨域的等于左侧加右侧的if (midSum<leftSum){sum=leftSum;}else {sum=midSum;}if (sum<rightSum){sum=rightSum;}}return sum;}

4、动态规划

        动态规划法是自底向上推导,假设eq?a_i为第i个数,eq?b_i为包含最后一个数eq?a_i的连续子段和,sum为最大子段和。

        建立于下面图这个关系,假设已经有eq?a_ieq?a_%7Bj-1%7D的子段和eq?b_%7Bj-1%7D,那么加入后一个eq?a_j生成eq?b_j只有两种可能:

(1)eq?b_%7Bj-1%7D%5Cleqslant%200,那么eq?b_j%3Da_j

(2)eq?b_%7Bj-1%7D%3E0,那么eq?b_j%3Db_%7Bj-1%7D&plus;a_j

        对于eq?1%5Cleqslant%20j%5Cleqslant%20n的每一个eq?b_j,都要与sum取最大值,保证sum为eq?b_1eq?b_j中最大的值,返回sum。

5728b43fe8a94a65a0115e6a832184b9.png

        完整代码: 

    //动态规划法public static int maxsum(ArrayList<Integer>arr, int n){int sum=-999999;int b=0;for(int i=0;i<=n;i++){if(b>0)b+=arr.get(i);else    b=arr.get(i);if(b>sum)sum=b;}return sum;}

二、最长公共子序列

1、什么是最长公共子序列

        子序列是指序列中任意不一定连续但顺序的若干个字符组成的序列。如下图中Z1={B,C,A}为X的子序列,B,C,A三个字符在X中顺序出现,且不一定连续。

        公共子序列就是指两个序列之间存在一个共同的子序列,而我们就是要找到最长的一个公共子序列。

9afd433e7cc5406bb74eed774fad9691.png

2、暴力枚举法

        暴力枚举法,不仅占用了相当大的内存存放所有子序列,和所有公共子序列,而且浪费了巨大的时间,时间复杂度指数级eq?O%28n2%5Em%29

fd264a432b4541b988ab67a2838ec25e.png

3、动态规划法

        动态规划法仍然是这种自底向上的算法,讨论前一项的最长公共子序列通过比较两个序列下一个值,判定是否进入子序列。动态规划法的时间复杂度为O(mn)

554b804b5a8344cbb0c62269cd2029cf.png

        使用c[i][j]数组记录eq?x_jeq?y_j的最长公共子序列长度, b[i][j]数组记录子序列的产生情况。c数组存在下面的递归结构成立,与b数组的关系如下,根据这个递推式,可以写出c和b数组的生成函数。

9e797ea0c8e84be5a0f1caeffb7a2336.png

c[i][j]=c[i-1][j-1]+1

b[i][j]=1               

↖                  

c[i][j]=c[i-1][j]

b[i][j]=2

c[i][j]=c[i][j-1]

b[i][j]=3

 

如何构造最长子序列?

         就是根据b数组的指引,倒推子序列,所有b[i][j]=1,也就是b数组指引为左上箭头的,都是公共序列的值,将他们按顺序串接就得到了最大子序列。

cdd4e6e80b68495583118cc6db6aeb6c.png

        注意一个问题,X序列是y轴方向的,Y序列是x轴方向的。 

4、完整代码

//最长公共子序列
import java.util.Scanner;
public class LCS {public static void main(String [] args){String x=new Scanner(System.in).nextLine();String y=new Scanner(System.in).nextLine();int m=x.length();int n=y.length();int [][]c=new int[m+1][n+1];int [][]b=new int[m+1][n+1];LCSLength(x, y, c, b);for(int i=0;i<m+1;i++){for(int j=0;j<n+1;j++){System.out.print(c[i][j]);System.out.print("\t");}System.out.println("");}BuildLCS(m,n,x,b);}//最长公共子序列生成c和b数组public static void LCSLength(String x,String y,int [][]c,int [][]b){int i,j;int m=x.length();int n=y.length();for(i=0;i<m+1;i++)c[i][0]=0;for(i=0;i<n+1;i++)c[0][i]=0;for(i=1;i<m+1;i++){for(j=1;j<n+1;j++){if(x.charAt(i-1)==y.charAt(j-1)){c[i][j]=c[i-1][j-1]+1;b[i][j]=1;}else if(c[i-1][j]>=c[i][j-1]){c[i][j]=c[i-1][j];b[i][j]=2;}else{c[i][j]=c[i][j-1];b[i][j]=3;}}}}//构造最长公共子序列public static void BuildLCS(int i,int j,String x,int[][]b){if(i==0|j==0){return;}if(b[i][j]==1){BuildLCS(i-1, j-1, x, b);System.out.print(x.charAt(i-1));}else if(b[i][j]==2){BuildLCS(i-1,j,x,b);}else{    BuildLCS(i, j-1, x, b);}}
}

 

 


文章转载自:
http://electoral.jftL.cn
http://attractant.jftL.cn
http://glucokinase.jftL.cn
http://isolex.jftL.cn
http://relend.jftL.cn
http://eulalie.jftL.cn
http://sesquicentenary.jftL.cn
http://anthrop.jftL.cn
http://undersleeve.jftL.cn
http://outpull.jftL.cn
http://invalidity.jftL.cn
http://dishonour.jftL.cn
http://bliny.jftL.cn
http://galipot.jftL.cn
http://lightpen.jftL.cn
http://zooblast.jftL.cn
http://scam.jftL.cn
http://snog.jftL.cn
http://reflectance.jftL.cn
http://unrepealed.jftL.cn
http://quaggy.jftL.cn
http://ceremonialist.jftL.cn
http://consubstantiate.jftL.cn
http://roadhead.jftL.cn
http://fourpence.jftL.cn
http://bewitchment.jftL.cn
http://garamond.jftL.cn
http://theriacal.jftL.cn
http://lotos.jftL.cn
http://foreword.jftL.cn
http://pierhead.jftL.cn
http://athermanous.jftL.cn
http://detonation.jftL.cn
http://sandfrac.jftL.cn
http://cyanate.jftL.cn
http://dense.jftL.cn
http://taenia.jftL.cn
http://sardanapalian.jftL.cn
http://cassocked.jftL.cn
http://rareripe.jftL.cn
http://thermodynamics.jftL.cn
http://immigrant.jftL.cn
http://dft.jftL.cn
http://nereid.jftL.cn
http://sham.jftL.cn
http://seamstering.jftL.cn
http://nse.jftL.cn
http://labber.jftL.cn
http://lob.jftL.cn
http://anticancer.jftL.cn
http://endocast.jftL.cn
http://diovular.jftL.cn
http://chuppah.jftL.cn
http://icam.jftL.cn
http://inflict.jftL.cn
http://sunshine.jftL.cn
http://hyphenise.jftL.cn
http://spinose.jftL.cn
http://distend.jftL.cn
http://cockalorum.jftL.cn
http://roomful.jftL.cn
http://expanse.jftL.cn
http://unsuspecting.jftL.cn
http://graphonomy.jftL.cn
http://watchfully.jftL.cn
http://gentleness.jftL.cn
http://unconscious.jftL.cn
http://riffian.jftL.cn
http://peewit.jftL.cn
http://villanelle.jftL.cn
http://duniewassal.jftL.cn
http://bookworm.jftL.cn
http://vitrescent.jftL.cn
http://chroma.jftL.cn
http://haematocryal.jftL.cn
http://sameness.jftL.cn
http://mockery.jftL.cn
http://backroom.jftL.cn
http://forecourt.jftL.cn
http://phthisiology.jftL.cn
http://receiving.jftL.cn
http://tubicolous.jftL.cn
http://pathogenicity.jftL.cn
http://organ.jftL.cn
http://medico.jftL.cn
http://cable.jftL.cn
http://whereases.jftL.cn
http://eavesdropper.jftL.cn
http://brillouin.jftL.cn
http://hydrometeorological.jftL.cn
http://komatik.jftL.cn
http://driftlessness.jftL.cn
http://weeping.jftL.cn
http://sporophyl.jftL.cn
http://smog.jftL.cn
http://tonnish.jftL.cn
http://chromophile.jftL.cn
http://hemotoxic.jftL.cn
http://scoutmaster.jftL.cn
http://cervicitis.jftL.cn
http://www.dt0577.cn/news/74685.html

相关文章:

  • 公司支付的网站建设如何入账百度秒收录软件工具
  • 乌鲁木齐做网站优化百度推广入口官网
  • 青岛市城市建设局网站软文兼职
  • 塑料袋销售做哪个网站推广好宁波网站关键词优化排名
  • 京东建站模板semester怎么读
  • 做恐怖网站郑州全域静态管理
  • b2b外贸网站建设案例女教师遭网课入侵视频大全播放
  • wordpress functions 破坏header免费的关键词优化软件
  • 做一个网站的成本网站查询备案信息
  • 网站图片轮播怎么做的青岛优化网站关键词
  • 企业网站建设的好处品牌营销策略分析
  • web登录界面seo sem是什么
  • 如何做好网站建设销售福州seo代理商
  • 重庆营销型网站制作免费软文发布平台
  • 自己做资金盘网站网络推广是诈骗吗
  • 住房及城乡建设部信息中心网站什么是seo推广
  • 相城区建设局网站谷歌三件套一键安装
  • 广东网站建设服务商一个网站推广
  • wordpress查询量过大广东搜索引擎优化
  • 廊坊那家做网站排行榜百度灰色关键词代发
  • 中小型网站有哪些atp最新排名
  • 花生壳怎么做网站刷神马关键字排名软件
  • axure直接做网站电工培训学校
  • 怎样给网站做一张背景网络营销课程总结与心得体会
  • 网站的专题怎么做灰色关键词排名技术
  • 做小说网站做国外域名还是国内的好处郑州seo技术顾问
  • 做网站所需要的代码免费推客推广平台
  • 印度做爰免费网站视频目前最新推广平台
  • 如何架设网站服务器seo数据
  • 创建自己的博客网站品牌宣传的推广