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 ...
随机推荐
- Centos6.5下DHCP服务器的安装和配置
1.首先需要安装DHCP的软件包,使用yum进行安装 # yum install -y dhcp.x86_64 dhcp-devel.x86_64 2.将/usr/share/doc/dhcp-4. ...
- 创建view,保存GROUP_CONCAT数据
create view user_account_view asSELECT u.userId UserId ,u.userCode UserCode,GROUP_CONCAT(ac.id) Acco ...
- 微信支付 301 500 php 7 simplexml_load_string
w simplexml_load_string http://stackoverflow.com/questions/35593521/php-7-simplexml
- CURLOPT_SSL_VERIFYPEER CURLOPT_SSL_VERIFYHOST
w /** * Set curl options relating to SSL. Protected to allow overriding. * @param $ch curl handle */ ...
- thinkphp5, 隐藏index.php
tp5官网手册里的代码有误, 注意防坑, 正确的应该是: 修改.htaccess文件: <IfModule mod_rewrite.c> Options +FollowSymlinks R ...
- Spring MVC 根据请求方法限定:请求方法(四)
请求方法 说明 GET 使用GET方法检索一个表述(representation)——也就是对资源的描述.多次执行同一GET请求,不会对系统造成影响,GET方法具有幂等性[指多个相同请求返回相同的结果 ...
- TypeScript学习笔记—函数
函数定义 在 JavaScript 中,有两种常见的定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expression): // 函数声明(Fu ...
- mysql中变量的定义
mysql中的变量定义 mysql的变量分为系统变量和用户变量,mysql系统定义的变量是系统变量,用户自己定义的变量为用户变量.对于系统变量,用户只能够改变它的值不能够创建新的系统变量.对于用户变量 ...
- jmeter 非GUI模式下测试报错An error occurred: Unknown arg:
D:\download\性能工具\JMeter\apache-jmeter-2.11\apache-jmeter-2.11\bin>jmeter -n -t E:\性能测试\jmeter scr ...
- python2 跟3的区别
1----python2:1 臃肿 , 源码的重复量很多2:语法不清晰,掺杂着 c,pyp,java,的一些陋习 python3: 几乎是重构后的源码,规范 清晰 优美 2.python的分类 分为编 ...