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 ...
随机推荐
- 【IDEA】本地新建Maven项目+配置Git和GitHub+代码上传和拉取到GitHub+其他IDEA和GitHub实战
一.本地新建Maven项目并启动成功 1. 按照IDEA提供的模板,构建一个maven webapp的模板项目. 一路Next,到最后的finish.如下图. 2. 新建Tomcat,启动刚建立的项目 ...
- Quest Active Directory
Get-QADGroupMember命令是Quest Active Directory的命令,必须安装如下包才能使用! 电脑路径: D:\soft\AD\Quest_Quest-One-ActiveR ...
- submit按钮修改宽高的坑
近些天对h5非常感兴趣,边工作边学习,虽然比较累,但过得很踏实.每天都要学习一点东西,这样才能对得起自己.好了,废话不多说,进入今天的主题. 今天遇到了一个非常有趣的东西,就是在修改submit按钮的 ...
- C#中Windows通用的回车转Tab方法
标签: windowsc#textboxbuttondropdownobject 2007-03-28 09:37 2773人阅读 评论(0) 收藏 举报 分类: C#(5) 版权声明:本文为博主 ...
- Grunt-Less批量编译为css
Grunt批量编译less module.exports = function (grunt) { grunt.initConfig({ less: { main: { expand: true, s ...
- 错误0x80070522:客户端没有所需的特权
win10或win7 C盘复制文件等遇到"错误0x80070522:客户端没有所需的特权" 在运行中输入 icacls c:\ /setintegritylevel M
- pandas 报错:【sys:1: DtypeWarning: Columns (15) have mixed types. Specify dtype option on import or set low_memory=False.】
错误原因 报错提示:“sys:1: DtypeWarning: Columns (15) have mixed types. Specify dtype option on import or set ...
- OVN实战---《A Primer on OVN》翻译
overview 在本文中,我们将在三个host之间创建一个简单的二层overlay network.首先,我们来简单看一下,整个系统是怎么工作的.OVN基于分布式的control plane,其中各 ...
- QT解析嵌套JSON表达式
QT5开发环境集成了解析JSON表达式的库.使用很方便. 友情提示一下,好像在QT4环境里.须要到官网下载相关的库文件才干使用解析功能.话不多说,上代码 1.在pro文件里增加 QT += scrip ...
- vue生命周期以及vue的计算属性
一.Vue生命周期(vue实例从创建到销毁的过程,称为生命周期,共有八个阶段) 1.beforeCreate :在实例初始化之后,数据观测 (data observer) 和 event/watche ...