求二维数组联通子数组和的最大值 (联通涂色) beta!
算法十分臃肿,效率捉鸡,不知用了多少循环,还有bug...任重道远,编程之美。
思想:按行遍历,找出每行的最大子数组。若行间都联通,行最大子数组相加后,再加上独立的正数。若行间不连通,找出较大子路径,再加上独立正数。
但是!有bug,写完之后想到的:每一行的最大子数组中的负数,有可能是不需要加上的。还没想好。
#include<iostream>
using namespace std; /*int yiwei_max(int n,int a[],int *p,int *q) //自己写的函数,返回下标有问题,网上找了个核心思想和变量完全一样的。
{
int temp=0,sum=-999999999,timer=-1;
for(int i=0;i<n;i++)
{
if(temp>0)
{
temp+=a[i];
}
else
{
temp=a[i];
}
if(temp>sum)
{
sum=temp;
*q=i;
timer++;
}
}
*p=*q-timer;
return sum;
}*/ int max_sum(int n,int a[],int *besti,int *bestj)
{
int *b = (int *)malloc(n * sizeof(int));
int sum = ;
int i = -;
int temp = ; for (i=;i<=n-;i++)
{
if (temp > )
{
temp += a[i];
}
else
{
temp = a[i];
}
b[i] = temp;
} sum = b[];
for (i=;i<=n-;i++)
{
if (sum < b[i])
{
sum = b[i];
*bestj = i;
}
} for (i = *bestj;i >= ;i--)
{
if (b[i] == a[i])
{
*besti = i;
break;
}
}
free(b);
return sum;
} void main()
{
int a[][],b[];
int up[],down[],t[];
int i,j,m,n,x,y;
int temp,t2;
int l=,u=,l_down,l_up,n_down,n_up;
int s; cout<<"几行几列?"<<endl;
cin>>m>>n;
for(i=;i<m;i++)
{
for(j=;j<n;j++)
{
cin>>a[i][j];
}
} for(i=;i<m;i++)
{
for(j=;j<n;j++)
{
b[j]=a[i][j];
}
//temp=yiwei_max(n,b,&x,&y);
temp=max_sum(n,b,&x,&y);
up[i]=x; //记录每行下标、上标和最大值。
down[i]=y;
t[i]=temp;
} t2=t[];
for(i=;i+<m;i++)
{
if(up[i]<=down[i+] && down[i]>=up[i+])
{
t2+=t[i+];
}
else
{
l_down=down[i];
l_up=up[i];
n_up=up[i+];
n_down=down[i+]; if(down[i]<up[i+]) //求数组两条路径的较大值
{
for(;l_down!=up[i+];)
{
l+=a[i][++l_down];
} for(;n_up!=down[i];)
{
u+=a[i+][--n_up];
}
} if(up[i]>down[i+])
{
for(;l_up!=down[i+];)
{
l+=a[i][--l_up];
} for(;n_down!=up[i];)
{
u+=a[i+][++n_down];
}
} s=l>u?l:u; if(s+t[i+]>)
{
t2+=t[i+]+s;
}
}
for(j=up[i];j<down[i];j++)
{
if(a[i+][j]>) t2+=a[i+][j]; //判别独立正数
}
} cout<<t2<<endl;
}

求二维数组联通子数组和的最大值 (联通涂色) beta!的更多相关文章
- 求二维数组最大子数组的和。郭林林&胡潇丹
求二维数组子数组的最大值,开始思路不太清晰.先从最简单的开始. 以2*2的简单数组为例找规律, 假设最大数为a[0][0],则summax=a[0][0],比较a[0][0]+a[0][1].a[0] ...
- 求数组的子数组之和的最大值III(循环数组)
新的要求:一维数组改成循环数组,只是涉及简单算法,只是拿了小数做测试 想法:从文件读取数组,然后新建数组,将文件读取的数组在新数组中做一下连接,成为二倍长度的数组,然后再遍历,将每次遍历的子数组的和存 ...
- Problem N: 求二维数组中的鞍点【数组】
Problem N: 求二维数组中的鞍点[数组] Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2764 Solved: 1728[Submit][S ...
- 求数组的子数组之和的最大值II
这次在求数组的子数组之和的最大值的条件下又增加了新的约束: 1.要求数组从文件读取. 2.如果输入的数组很大, 并且有很多大的数字, 就会产生比较大的结果 (考虑一下数的溢出), 请保 ...
- Task 4.5 求二维数组中的最大连通子数组之和
任务:输入一个二维整形数组,数组里有正数也有负数. 求所有子数组的和的最大值.要求时间复杂度为O(n). 1.设计思想:因为用之前的解决子数组最大和的问题的思路一直没能解决这个问题,后来看到同学使用将 ...
- C#中求数组的子数组之和的最大值
<编程之美>183页,问题2.14——求子数组的字数组之和的最大值.(整数数组) 我开始以为可以从数组中随意抽调元素组成子数组,于是就有了一种想法,把最大的元素抽出来,判断是大于0还是小于 ...
- 求数组的子数组之和的最大值IV
在之前的基础上又安排了二维数组的,在课上一开始是理解错要求了,简单的以为用循环数组就能解决,但是却忽视了子数组是否能构成矩形,之后课下和同学们讨论,主要是多重遍历,但是我还是没搞明白怎么构成新的二维数 ...
- 求二维数组的最大子数组———曹玉松&&蔡迎盈
继上节课老师让求了一维数组最大的子数组后,这节课堂上,老师加深了难度,给了一个二维数组,求最大子数组,开始觉得很容易,但是自己思考起来感觉这个算法很困难,既需要考虑数组直接的连续,又要求出最大的,老师 ...
- N元数组的子数组之和的最大值
题目:有N个整数的元素的一维数组,求子数组中元素之和中最大的一组(思想:动态规划) 分析: 设该数组为array[N], 那么对于array[i]该不该在元素之和最大的那个子数组中呢?首先,不如假设a ...
随机推荐
- POJ 1066 昂贵的聘礼
Description 年轻的探险家来到了一个印第安部落里. 在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长减 ...
- 【转】Android实战技巧之四十九:Usb通信之USB Host
零 USB背景知识 USB是一种数据通信方式,也是一种数据总线,而且是最复杂的总线之一. 硬件上,它是用插头连接.一边是公头(plug),一边是母头(receptacle).例如,PC上的插座就是母头 ...
- windows下mysql和linux下mysql主从配置
1. linux下mysql安装版本5.6 windows下mysql版本5.7 不要问我为什么版本不一致 就是想这么搞 2. linux为主服务器 windows为从服务器 3.找到li ...
- 连接远程数据库ORACLE11g,错误百出!
客户机中PLSQL DEV访问虚拟机中的ORACLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签: ORACLE 忙了一下午,只有两个字形容:麻烦! ...
- tiff和geotiff格式分析
1. tiff 文件的基本格式 TIFF(Tag Image File Format) 图像文件说明: TIFF 文件是由许多的标签 (tag) 组成 , 在 Adobe 的有关 tiff6.0 的说 ...
- ICSharpCode.SharpZipLib 开源压缩库使用示例
官方网站:http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx 插件描述: ICSharpCode.SharpZipLib.dl ...
- 用BCP从SQL Server 数据库中导出Excel文件
BCP(Bulk Copy Program)是一种简单高效的数据传输方式在SQL Server中,其他数据传输方式还有SSIS和DTS. 这个程序的主要功能是从数据库中查询Job中指定step的执行信 ...
- PAT B1010 一元多项式求导 (25 分)
设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为nxn−1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数).数字间以空格分隔. ...
- Python2.7-os.path
os.path 模块,实现了对文件路径的操作,但是不操作文件.由于不同系统文件路径格式不同,os.path 总是调用适合当前系统的版本,你也可以手动导入别的系统的(posixpath,ntpath,m ...
- 【Nodejs】Browsersync同步浏览器测试
说明文档:http://www.browsersync.cn/docs/ 安装命令: ①全局安装 npm install -g browser-sync ②局部/本地安装 npm install br ...