java-二维数组——with 刘童格
#include<iostream>
#include<string>
using namespace std;
void MaxIntArray(int a[],int &max,int &begin,int &end,int n);
//先将二维数组按行分成n个一维数组,求出每个一维数组最大子数组和,并记录最大子数组和的首末位置,在通过首末位置判断是否联通
void main()
{
int n,m;//n行m列
cout<<"请输入二维数组的行数和列数:"<<endl;
cin>>n>>m;
int a[100][100];
int b[100];
cout<<"输入该二维数组"<<endl;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j]; //分块
int Max[100];
int Begin[100];
int End[100];
for(int i=0;i<n;i++)
{
//按行分组
for(int j=0;j<m;j++)
{
b[j]=a[i][j]; }
MaxIntArray(b,Max[i],Begin[i],End[i],m);
} int max=Max[0];
for(int i=0;i<n-1;i++)
{
if((Begin[i]<=End[i+1]&&Begin[i]>=Begin[i+1])||(End[i]<=End[i+1]&&End[i]>=Begin[i+1]))
{
max=Max[i+1]+max;
}
else
{
//如果不能直接连通,判断代价是否合适
if(Begin[i]>End[i+1])
{
int t = Begin[i]-End[i+1];
int s = Begin[i];
int temp=0;
for(int k=0;k<t;k++)
{
temp+=a[i+1][s-k];
}
if(temp+Max[i+1]>0)
max=temp+Max[i+1];
}
if(End[i]<Begin[i+1])
{
int t = Begin[i+1]-End[i];
int s = End[i];
int temp=0;
for(int k=0;k<t;k++)
{
temp+=a[i+1][s+k];
}
if(temp+Max[i+1]>0)
max=temp+Max[i+1];
}
}
}
cout<<"最大子数组块的值为:"<<max<<endl;
}
//计算一维最大子数组,并返回起始位置的函数
void MaxIntArray(int a[],int &max,int &begin,int &end,int n)
{
int Max[100];
Max[0] = 0;
int i = 0;//数组下标
int j = 0;//最大值数组下标
int temp=0;//中间变量
//记录子数组的起始位置和末位
int Bg[100]={-1,-1,-1,-1,-1};
int Ed[100];
while(i<n){
if(temp+a[i]>=Max[j])
{
temp=temp+a[i];
Max[j]=temp;
if(Bg[j]==-1)
Bg[j]=i;
Ed[j]=i;
i++;
}
else if(temp+a[i]<Max[j]&&temp+a[i]>0)
{
temp=temp+a[i];
i++;
}
else if(temp+a[i]<=0)
{
i++;
j++;
Max[j]=0;
temp=0;
} }
max = Max[0];
int q=0;
for(int k=0;k<=j;k++){
if(Max[k]>max)
{
max=Max[k];
q=k;
}
}
begin=Bg[q];
end=Ed[q]
java-二维数组——with 刘童格的更多相关文章
- JAVA二维数组的复制
JAVA二维数组的复制 笔者今天做一道ccf题目时,遇到要将二维数组拷贝复制时,没有用常规的那种一个一个数的复制,用的是System.arraycopy()来进行复制,下面介绍这个函数的一些注意点: ...
- Java 二维数组,排序、切换顺序,查表法二进制十进制,这班查找、排序(冒泡、选择)、遍历,获取最大小值(4)
Java 二维数组,排序.切换顺序,查表法二进制十进制,折半查找.排序(冒泡.选择).遍历,获取最大小值(4)
- 062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用
062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用 本文知识点:二维数组应用 二维数组的声明和创建 ? 出现空指针异常 数组的名字指向数组的第 ...
- JAVA二维数组小记
入手JAVA第二天 //二维数组 //数据类型 [][] 数组名 = new 数据类型[行的个数][列的个数];3 String [][] name = {{"admin",&qu ...
- java二维数组学习(转)
转自:http://blog.csdn.net/java1992/article/details/5808709,在这里谢过了 /* * java学习: * 二维数组的使用: */public cla ...
- java 二维数组的行列长度
在 java 中,其实只有一维数组,而二维数组是在一维数组中嵌套实现的.比如 int[][] a = {{},{},{},{}} 要取行数和某一行的列数可以 : int rowLen = a.leng ...
- 06-01 Java 二维数组格式、二维数组内存图解、二维数组操作
二维数组格式1 /* 二维数组:就是元素为一维数组的一个数组. 格式1: 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. n:表示每一个一维数组的 ...
- Java 二维数组
在 Java 中,二维数组与一维数组一样,但是不同于 C 中的二维数组: 1. 在 Java 中,二维数组可以看成是以数组为元素的数组,例如: int a[][] = {{1,2},{3,4,5,6 ...
- 什么是二维数组?二维遍历?Java二维数组制作图片迷宫 使用如鹏游戏引擎制作窗口界面 附带压缩包下载,解压后双击start.bat启动
什么是二维数组? 数组当中放的还是数组 int [][] arr=new int[3][2]; 有3个小箱子,每个箱子2个格子. 看结果? int [][] arr=new int[3][2]; Sy ...
随机推荐
- 【论文翻译】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文链接:https://arxi ...
- Word Formation
构词 Word Formation 1.派生Derivation 2.合成Compounding 3.截短Clipping 4.混合Blending 1派生Derivation 1).前缀 除少数英语 ...
- Collections工具类的使用
创建实体类 public class News implements Comparable { private int id; //新闻编号 private String title; //新闻标题 ...
- Linux(7)- Nginx.conf主配置文件、Nginx虚拟主机/访问日志/限制访问IP/错误页面优化、Nginx反向代理、Nginx负载均衡
一.Nginx.conf主配置文件 Nginx主配置文件conf/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的.一般,每个区块以一对大括号{}来表示开始与结束. 核心模 ...
- Python高级教程-迭代
Python中的迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration). 在Python中,迭代是通过for...in ...
- Sql server用QQ邮箱发送邮件
一.配置数据库邮件 https://jingyan.baidu.com/article/3ea51489a135f752e71bba5b.html
- ionic学习笔记—常用命令
Ionic CLI介绍 Ionic CLI是开发Ionic应用程序过程中使用的主要工具.它就像一个瑞士军刀:它在一个界面下汇集了大量工具. CLI包含许多对Ionic开发至关重要的命令,例如start ...
- 经典排序算法的总结及其Python实现
经典排序算法总结: 结论: 排序算法无绝对优劣之分. 不稳定的排序算法有:选择排序.希尔排序.快速排序.堆排序(口诀:“快速.选择.希尔.堆”).其他排序算法均为稳定的排序算法. 第一趟排序后就能确定 ...
- oracle procedure简单的将临时表的数据插入或更新到目标表
CREATE OR REPLACE PROCEDURE DEAL_SYNC_SCH_CUSTPHONE_NEW AS CURSOR C_CURU IS SELECT * FROM CBS_COS.SC ...
- springmvc ModelAndView
/** * 目标方法的返回值可以是 ModelAndView 类型. * 其中可以包含视图和模型信息 * SpringMVC 会把 ModelAndView 的 model 中数据放入到 reques ...