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

网站 建设 语言合肥有哪些做网站的公司

网站 建设 语言,合肥有哪些做网站的公司,软文营销的技巧有哪些?,wordpress弹框登录前缀和是指数组一定范围的数的总和,常见的有两种,一维和二维,我会用两道题来分别解析 一维 DP34 【模板】前缀和 题目: 题目解析: 暴力解法 直接遍历数组,遍历到下标为 l 时,开始进行相加,直到遍历到下标为 r ,最后返回总和.这样做的时间复杂度为: O(n) public class Main …

前缀和是指数组一定范围的数的总和,常见的有两种,一维和二维,我会用两道题来分别解析

一维

DP34 【模板】前缀和

题目:

题目解析:

暴力解法

直接遍历数组,遍历到下标为 l 时,开始进行相加,直到遍历到下标为 r ,最后返回总和.这样做的时间复杂度为: O(n)

public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别//接收数据int n = in.nextInt(),q=in.nextInt();int[] arr = new int[n+1];arr[0]=0;for(int i=1;i<=n;i++){arr[i]=in.nextInt();}while(q>0){int l=in.nextInt(),r=in.nextInt();int sum = 0;for(int i =l;i<=r;i++){sum+=arr[i];}System.out.println(sum);q--;}}
}

虽然代码本身是没有问题的,但是在某些情况下会运行超时

优化

对于前缀和来说,我们可以使用动态规划的部分知识来进行解决,总共分为两步

1.预处理前缀和数组

我们创建一个新的数组,数组的规模和原数组保持一致,如图:

 

但是在我们求dp数组时,难免会对原数组重复计算,这样会增加代码的耗时,有没有简洁的方法呢?

当然是有的,从dp的获得式中我们可以发现, dp[i] = dp[i-1]+arr[i] 

2.使用数组

最后我们就可以返回值, 也就是上文提到的 dp[r]-dp[l-1] 

代码

public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别//接收数据int n = in.nextInt(),q=in.nextInt();int[] arr = new int[n+1];arr[0] = 0;for(int i=1;i<arr.length;i++){arr[i] = in.nextInt();}//计算动态数组long[] dp = new long[n+1];dp[0] = 0;for(int i=1;i<dp.length;i++){dp[i]=dp[i-1]+arr[i];}//处理结果while(q>0){int l=in.nextInt(),r=in.nextInt();System.out.println(dp[r]-dp[l-1]);q--;}
}

在代码中我们可以看到,我们为数组增加了辅助节点,也就是 arr[0] 和 dp[0] ,那么为什么要增加这个辅助节点呢?或者为什么在使用数组的时候,下标要从1开始计算呢?

因为如果我们没有辅助节点或者从0开始计算,那么当 l (求前缀和的起点) 为 0 时,那么 dp[l-1] 就会越界

运行结果

二维

二维数组也就是矩阵,在计算矩阵的前缀和时,我们需要更注意一些细节

例题: DP35 【模板】二维前缀和

这道题大致与上一道题相似,所以就不进行暴力解法了,直接开始解析

也就是说,这里我们已经得到了用于动态规划的数组 dp ,我们只要再将dp中的值进行计算,就可以得到最后的值了

所以,最后要得出的答案就是 D = dp[x2][y2] -dp[x1-1][y1] -dp[x1][y1-1] +dp[x1-1][y1-1] 

代码:

public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别//获取数据int n = in.nextInt(),m=in.nextInt(),q=in.nextInt();int[][] arr = new int[n+1][m+1];for(int i=1;i<n+1;i++){for(int j=1;j<m+1;j++){arr[i][j] = in.nextInt();}}//设置动态矩阵long[][] dp = new long[n+1][m+1];for(int i=1;i<n+1;i++){for(int j=1;j<m+1;j++){dp[i][j] = dp[i-1][j]+dp[i][j-1]+arr[i][j]-dp[i-1][j-1];}}//得出答案while(q>0){int x1=in.nextInt(),y1=in.nextInt(),x2=in.nextInt(),y2=in.nextInt();System.out.println(dp[x2][y2]-dp[x1-1][y2]-dp[x2][y1-1]+dp[x1-1][y1-1]);q--;}
}

 运行结果:


文章转载自:

http://zYLRt7mY.xpmhs.cn
http://XsvF3k9r.xpmhs.cn
http://2eCfYdw2.xpmhs.cn
http://4LBGJrBO.xpmhs.cn
http://ZIlJ1EJ3.xpmhs.cn
http://H9rKd5gL.xpmhs.cn
http://eswL4mA0.xpmhs.cn
http://FLsFT21e.xpmhs.cn
http://Hm1y9MXf.xpmhs.cn
http://FdyzOq4l.xpmhs.cn
http://PKINx3m3.xpmhs.cn
http://G47eZCva.xpmhs.cn
http://8UGlHG9M.xpmhs.cn
http://jNXA9XXM.xpmhs.cn
http://mDdZYHO9.xpmhs.cn
http://YkHZgkCl.xpmhs.cn
http://oJZg8b7c.xpmhs.cn
http://1PJVy1WB.xpmhs.cn
http://fs01UTS6.xpmhs.cn
http://sghVS3Gw.xpmhs.cn
http://8lsBDUVi.xpmhs.cn
http://BavXSDKm.xpmhs.cn
http://GRK4Fz9Y.xpmhs.cn
http://1RDisK05.xpmhs.cn
http://NhEJCmIM.xpmhs.cn
http://sfFgJac5.xpmhs.cn
http://Po2n2LgO.xpmhs.cn
http://otQuSMkx.xpmhs.cn
http://OYE9Kyxh.xpmhs.cn
http://8FUrtYeC.xpmhs.cn
http://www.dtcms.com/wzjs/693350.html

相关文章:

  • 做网站赚钱 百度网盟做网站题材
  • 哪些公司做网站维护的杭州微网站建设
  • 域名通过了才可以做网站吗东莞建设网 东莞市住房和城乡建设局门户网站
  • 用网站做微信公众号ui设计培训班排名
  • 网站开发毕业设计答辩静态网站怎么维护
  • 南京做网站的公司郑州专业网站建设搭建公司
  • 用ps做网站首页顶部图片wordpress微信 缩略图不显示
  • 企业营销型网站建设品牌中国移动的5G网站建设给了谁
  • 免费建站的网站99海南建设培训网站
  • 云阳一平米网站建设网站开发使用什么技术
  • 城市文明建设网站logo在线设计软件
  • h5网站不利于优化吗广东省建设工程交易中心网站
  • 买网站做淘宝客小型网站设计
  • 物流网站建设策划书的总结杭州软件开发制作
  • phpcms 怎么做视频网站开发和研发的区别
  • 付费推广网站工作是工作
  • 宁德城乡建设网站搭建织梦网站视频教程
  • 怎么向企业推销网站建设网页制作教程哔哩哔哩
  • 网站桥页怎么找河南省住房和建设厅安监站网站
  • 网站登陆页面怎么做财经门户网站建设
  • 什么网站可以做国外生意上海论坛社区
  • 上海网站建设开发电话哈尔滨网络公司案例
  • 贵阳专业做网站公司有哪些产品营销方案
  • 北京建设监督网站山东宏福建设集团有限公司网站
  • 美食网站网页设计百度应用市场下载安装
  • WordPress优化速度插件泉州做网站优化公司
  • 做宠物网站需要实现什么功能百度网站地图生成
  • 南昌公司做网站网站录入
  • 2022年卡一卡二卡三精品关键词优化的最佳方法
  • 网站栏目建设微信快速赚100块