算法十分臃肿,效率捉鸡,不知用了多少循环,还有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!的更多相关文章

  1. 求二维数组最大子数组的和。郭林林&胡潇丹

    求二维数组子数组的最大值,开始思路不太清晰.先从最简单的开始. 以2*2的简单数组为例找规律, 假设最大数为a[0][0],则summax=a[0][0],比较a[0][0]+a[0][1].a[0] ...

  2. 求数组的子数组之和的最大值III(循环数组)

    新的要求:一维数组改成循环数组,只是涉及简单算法,只是拿了小数做测试 想法:从文件读取数组,然后新建数组,将文件读取的数组在新数组中做一下连接,成为二倍长度的数组,然后再遍历,将每次遍历的子数组的和存 ...

  3. Problem N: 求二维数组中的鞍点【数组】

    Problem N: 求二维数组中的鞍点[数组] Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 2764  Solved: 1728[Submit][S ...

  4. 求数组的子数组之和的最大值II

    这次在求数组的子数组之和的最大值的条件下又增加了新的约束:  1.要求数组从文件读取.      2.如果输入的数组很大,  并且有很多大的数字,  就会产生比较大的结果 (考虑一下数的溢出), 请保 ...

  5. Task 4.5 求二维数组中的最大连通子数组之和

    任务:输入一个二维整形数组,数组里有正数也有负数. 求所有子数组的和的最大值.要求时间复杂度为O(n). 1.设计思想:因为用之前的解决子数组最大和的问题的思路一直没能解决这个问题,后来看到同学使用将 ...

  6. C#中求数组的子数组之和的最大值

    <编程之美>183页,问题2.14——求子数组的字数组之和的最大值.(整数数组) 我开始以为可以从数组中随意抽调元素组成子数组,于是就有了一种想法,把最大的元素抽出来,判断是大于0还是小于 ...

  7. 求数组的子数组之和的最大值IV

    在之前的基础上又安排了二维数组的,在课上一开始是理解错要求了,简单的以为用循环数组就能解决,但是却忽视了子数组是否能构成矩形,之后课下和同学们讨论,主要是多重遍历,但是我还是没搞明白怎么构成新的二维数 ...

  8. 求二维数组的最大子数组———曹玉松&&蔡迎盈

    继上节课老师让求了一维数组最大的子数组后,这节课堂上,老师加深了难度,给了一个二维数组,求最大子数组,开始觉得很容易,但是自己思考起来感觉这个算法很困难,既需要考虑数组直接的连续,又要求出最大的,老师 ...

  9. N元数组的子数组之和的最大值

    题目:有N个整数的元素的一维数组,求子数组中元素之和中最大的一组(思想:动态规划) 分析: 设该数组为array[N], 那么对于array[i]该不该在元素之和最大的那个子数组中呢?首先,不如假设a ...

随机推荐

  1. 邮局加强版:四边形不等式优化DP

    题目描述 一些村庄建在一条笔直的高速公路边上,我们用一条坐标轴来描述这条公路,每个村庄的坐标都是整数,没有两个村庄的坐标相同.两个村庄的距离定义为坐标之差的绝对值.我们需要在某些村庄建立邮局.使每个村 ...

  2. CountUp.js用法 让数字动起来的插件

    CountUp.js 无依赖的.轻量级的 JavaScript 类,可以用来快速创建以一种更有趣的动画方式显示数值数据.尽管它的名字叫 countUp,但其实可以在两个方向进行变化,这是根据你传递的 ...

  3. 2298: [HAOI2011]problem a

    Description 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) 这句话的意思就等于是说第i个 ...

  4. C#实现之(自动更新)

    做开发的人,尤其是做客户端(C/S)系统开发的人都会遇到一个头疼的问题,就是软件的自动更新:系统发布后怎样自动的更新程序,在下有幸开发过一个自动更新程序,更新程序与任何宿主程序是完全独立的:只要在主程 ...

  5. WorldWind源码剖析系列:图层管理器按钮类LayerManagerButton和菜单条类MenuBar

    WorldWindow用户定制控件类中所包含的的可视化子控件主要有:图层管理器按钮类LayerManagerButton和菜单条类MenuBar.BmngLoader类中所包含的的可视化子控件主要有: ...

  6. nginx配置收集

    同个服务,分别读取不同借口 location /xibao/service_api/ { if ($request_uri ~ ^/xibao/(.*)) { set $xibao_data_url ...

  7. 客户端本地存储的比较及使用window.name数据传输

    一:cookie: 1. 什么是cookie? Cookie是在客户端用于存储会话信息的,用户请求页面在web服务器与浏览器之间传递.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cooki ...

  8. 浅谈 DNS

    一.DNS(Domain Name System,域名系统) 概念:万维网(WWW是环球信息网的缩写,亦作“Web”.“WWW”.“'W3'”,英文全称为“World Wide Web”),作为域名和 ...

  9. C#基础之.NET环境下WebConfig的加密

    在将ASP.NET项目部署到服务器上时,内网环境下Web.Config往往是直接复制过去.对于外网环境,则需要对Web.Config文件进行加密. .NET环境下一共提供了2种方式的加密功能,分别是D ...

  10. AngularJS+bootstrap-switch 实现开关控件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...