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

惠州市住房和城乡建设厅网站网址大全浏览器

惠州市住房和城乡建设厅网站,网址大全浏览器,爱做网站软件,如何在360网页上做公司网站样例说明 满足条件的子矩阵一共有 19 , 包含: 大小为 11 的有 10 个。 大小为 12 的有 3 个。 大小为13 的有 2 个。 大小为 14 的有 1 个。 大小为 21 的有 3 个。 前缀和二维数组 前缀和暴力搜索 import java.util.*; public class Main{private static int ans0;pub…

在这里插入图片描述
样例说明
满足条件的子矩阵一共有 19 , 包含:

大小为 1×1 的有 10 个。

大小为 1×2 的有 3 个。

大小为1×3 的有 2 个。

大小为 1×4 的有 1 个。

大小为 2×1 的有 3 个。

在这里插入图片描述
前缀和二维数组
在这里插入图片描述

前缀和+暴力搜索

import java.util.*;
public class Main{private static int ans=0;public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int N=scanner.nextInt();int M=scanner.nextInt();int K=scanner.nextInt();int[][] a=new int[N+1][M+1];int[][]  preSum = new int[N+1][M+1];for(int i=1;i<=N;i++){for(int j=1;j<=M;j++){a[i][j]=scanner.nextInt();//二维数组中的各个前缀合//preSum[i][j] = a[i][j]+preSum[i-1][j]+preSum[i][j-1]-preSum[i-1][j-1];}}//暴力枚举二维数组for(int i1=1;i1<=N;i1++){//遍历行for(int i2=i1;i2<=N;i2++){for(int j1=1;j1<=M;j1++){//遍历列for(int j2=j1;j2<=M;j2++){//枚举各个满足要求的前缀和int z=preSum[i2][j2]-preSum[i2][j1-1]-preSum[i1-1][j2]+preSum[i1-1][j1-1];// System.out.println(z);if(z<=K){ans++;}}}}}for (int i = 0; i <=N; i++) {for (int j = 0; j <=M; j++) {System.out.print(preSum[i][j]+" ");}System.out.println();}System.out.println(ans);}
}

4个for循环时间复杂度比较高
采用前缀和+滑动窗口
首先对每一列进行前缀和

  for(int i=1;i<=N;i++){for(int j=1;j<=M;j++){a[i][j]=scanner.nextInt();preSum[i][j] = a[i][j]+preSum[i-1][j];}}

在这里插入图片描述
通过滑动窗口我们可以将4个for循环减少至3个。只需两层for循环遍历行,第三场for循环两个代表列的指针进行滑动窗口。
当遇到不满足条件的时候j+1向右移动列指针。

        for(int i1=1;i1<=N;i1++){for(int i2=i1;i2<=N;i2++){int sum=0;//一个范围的区间和结束需要重新将sum更新为0for(int j1=1,j2=1;j2<=M;j2++){sum+=preSum[i2][j2]-preSum[i1-1][j2];//累加区间和System.out.println(sum);while(sum>K){sum-=preSum[i2][j1]-preSum[i1-1][j1];//不符合条件,减去上一列的区间和(通过左边界的最上层的区间和减去左下边界下一层的区间和就等于上一列的区间和)//System.out.println("preSum[i2][j1]"+preSum[i2][j1]+"-->"+"preSum[i1-1][j1]"+preSum[i1-1][j1]);j1+=1;//向右移动窗口}ans+=j2-j1+1;//j2-j1+1的长度就是符合条件的个数}}}

完整代码:

import java.util.Scanner;
import java.io.*;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {private static StreamTokenizer re=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));//快速输入private static int nextInt() throws IOException {re.nextToken();return (int)re.nval;}public static void main(String[] args) throws IOException{//Scanner scan = new Scanner(System.in);//在此输入您的代码...int N=nextInt();int M=nextInt();int K=nextInt();int[][] a=new int[N+1][M+1];int[][]  preSum = new int[N+1][M+1];for(int i=1;i<=N;i++){for(int j=1;j<=M;j++){a[i][j]=nextInt();preSum[i][j] = a[i][j]+preSum[i-1][j];}}int ans=0;for(int i1=1;i1<=N;i1++){for(int i2=i1;i2<=N;i2++){int sum=0;//一个范围的区间和结束需要重新将sum更新为0for(int j1=1,j2=1;j2<=M;j2++){sum+=preSum[i2][j2]-preSum[i1-1][j2];//累加区间和//    System.out.println(sum);while(sum>K){sum-=preSum[i2][j1]-preSum[i1-1][j1];//不符合条件,减去上一列的区间和(通过左边界的最上层的区间和减去左下边界下一层的区间和就等于上一列的区间和)//System.out.println("preSum[i2][j1]"+preSum[i2][j1]+"-->"+"preSum[i1-1][j1]"+preSum[i1-1][j1]);j1+=1;//向右移动窗口}ans+=j2-j1+1;//j2-j1+1的长度就是符合条件的个数}}}System.out.println(ans);}
}

模拟过程
在这里插入图片描述

http://www.mmbaike.com/news/106612.html

相关文章:

  • 做设计最好的参考网站搜索优化
  • 自己做网站,为什么出现403外贸网站建设报价
  • 网站维护一般多久百度搜索热度排名
  • 网站建设 网站优化营销型网站建设专家最近有新病毒出现吗
  • 全球购物网站排名项目推广
  • ai智能搜索引擎app排名优化
  • 由担路网提供网站建设app拉新放单平台
  • 软件开发与网站建设百度互联网营销顾问
  • wordpress+blog+推荐沈阳关键词优化报价
  • 做网站用那一种语言最好seo营销技巧培训班
  • 河北建设行业信息网站百度app 浏览器
  • b2b电子商务交易模式网站的特点广州线下培训机构停课
  • 网站备案政策百度账号登录个人中心
  • 微信公众交友网站开发快手流量推广网站
  • 网站icp备案号怎么查询淘宝运营培训机构
  • 广东省政府网站集约化建设seo诊断分析工具
  • 网站排名如何提升必应搜索引擎网址
  • 委托网络公司做的网站侵权百度搜索引擎收录
  • 广州一次做网站百度seo排名优化公司哪家强
  • 男女生做恶心的网站最近一周的新闻大事10条
  • 微商城网站建设方案郑州百度seo排名公司
  • 提供邢台企业做网站关键词优化工具互点
  • 网络营销跟做网站有什么区别网络推广是做什么工作
  • wordpress 限制文章苏州seo怎么做
  • vps的网站打不开宁波seo网站排名
  • 如何做外贸独立网站石家庄百度推广排名优化
  • 宁波网络营销服务上海抖音seo
  • 新余建站公司南京seo建站
  • 广州化妆品网站建设济南做网站公司哪家好
  • 佛山定制网站建设微营销软件