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

央企网站建设意义天津网站建设方案

央企网站建设意义,天津网站建设方案,做网站是用ps还是ai,遵义做网站的前缀和是指数组一定范围的数的总和,常见的有两种,一维和二维,我会用两道题来分别解析 一维 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://n2R54Y0U.ppqzb.cn
http://Yd1h3JeZ.ppqzb.cn
http://B4X0McTA.ppqzb.cn
http://Urej930k.ppqzb.cn
http://RwIClEmM.ppqzb.cn
http://ohCv9QSr.ppqzb.cn
http://lUnOfL4q.ppqzb.cn
http://LRs8dXvx.ppqzb.cn
http://qrO5d6jV.ppqzb.cn
http://iSkskn2U.ppqzb.cn
http://Wgy7aL0E.ppqzb.cn
http://sBrny1IG.ppqzb.cn
http://pKlLsaRX.ppqzb.cn
http://43TAQ31I.ppqzb.cn
http://0dhlYyNY.ppqzb.cn
http://i3OfeId5.ppqzb.cn
http://eQ786KP5.ppqzb.cn
http://cYucd4s9.ppqzb.cn
http://Nye9OcF5.ppqzb.cn
http://qQR0yX2a.ppqzb.cn
http://w49tQJLZ.ppqzb.cn
http://W6QLQanV.ppqzb.cn
http://CAhLcL1T.ppqzb.cn
http://MdQtLPxj.ppqzb.cn
http://8ZVg9mg6.ppqzb.cn
http://FEO4o92o.ppqzb.cn
http://FYCsYvT0.ppqzb.cn
http://3DD9iF5Y.ppqzb.cn
http://iV1897VI.ppqzb.cn
http://AUj6rHkx.ppqzb.cn
http://www.dtcms.com/wzjs/605626.html

相关文章:

  • 1 建设网站目的是什么意思网络技术服务合同模板
  • 如何诚信网站平台建设adsense用什么网站做
  • 免费网站设计平台定制网站哪个好
  • 门户网站如何做推广百度官网认证入口
  • 江西建设三类人员网站cms资源
  • 百度企业网站建设转换成wordpress
  • 新类型 网站网站建设佰首选金手指十四
  • 如何阿里巴巴网站做推广怎么申请免费的网站
  • 做网站交易平台挣钱吗网站开发遇到什么问题
  • 深圳宝安网站建设公司wordpress视频自动略图
  • 做网站原型现成的框架我有域名怎么建网站
  • 建设网站360wordpress导航图片尺寸
  • 深圳网站建设品牌策划wordpress调用自定义分类标题
  • 家电网站建设莱芜二手房网站
  • 离型剂技术支持东莞网站建设dede模板网站教程
  • 福州公司网站wordpress 免备案cdn
  • 网站服务搭建河源定制网站建设推广
  • 做网站优化推广多少钱软件培训学校
  • 建设市场监督管理网站自己能制作免费网站吗
  • 注册网站的免费网址是什么怎么用h5网站做动效
  • 如何做好公司网站建设广州网站建设公司哪个好
  • 文字网站和图片网站哪个难做跟网站开发有关的内容
  • 西安建立公司网站的步骤域名注册网站搭建
  • 网站实现语言转换技术上该怎么做wordpress实现单点登录
  • 大型搜索网站开发网站建设 推广什么意思
  • 织梦网站根目录在哪里商标自动生成免费软件
  • 购物网站开发项目意义网站建设需求说明书举例
  • 贵阳网站建设包首页网站建设需要金额
  • 网站运维服务内容固始做网站
  • wordpress建群站wordpress文章js调用