返回一个二维整数数组中最大联通子数组的和
2016-04-06 18:49
239 查看
一.题目
返回一个二维整数组中最大联通子数组的和
二.题目要求:
1.输入一个二维数组,数组里既有正数也有复数
2.求所有子数组的和的最大值
三.设计思路:
首先将二维数组中正整数的值找出来,之后找到每个正整数上下左右加起来为正的负数。之后判断是否联通,将小的负数排除掉,最后留下的是二维整数数组中最大联通子数组。
四。结对开发伙伴:
姓名:程思敏
博客名:鹏程万里之思
博客地址链接:http://home.cnblogs.com/u/pengchengwanli/
五.代码:
六.运行结果:
返回一个二维整数组中最大联通子数组的和
二.题目要求:
1.输入一个二维数组,数组里既有正数也有复数
2.求所有子数组的和的最大值
三.设计思路:
首先将二维数组中正整数的值找出来,之后找到每个正整数上下左右加起来为正的负数。之后判断是否联通,将小的负数排除掉,最后留下的是二维整数数组中最大联通子数组。
四。结对开发伙伴:
姓名:程思敏
博客名:鹏程万里之思
博客地址链接:http://home.cnblogs.com/u/pengchengwanli/
五.代码:
//2016 4 2 王宗泽 程思敏 #include <iostream> #include <time.h> #define M 3 #define N 5 using namespace std; void main() { int a[M] = {0},b[M] ={0}; //判断联通性,0为未选中,1为选中,2为连通 bool flg = 0; //判断是否有1存在,存在为O。 int sum = 0; //最后和 srand(unsigned((int)time(0))); for (int i = 0;i < M;i++) { for (int j = 0;j < N;j++) { a[i][j] = rand()%50 - 20; cout << a[i][j] << "\t"; if (a[i][j] >= 0) { b[i][j] = 1; } } cout << endl; } cout << endl; for (int i = 0;i < M;i++) { for (int j = 0;j < N;j++) { if (b[i][j] == 1) { if (a[i+1][j] + a[i][j] > 0 && b[i+1][j] == 0) { b[i+1][j] = 2; } if (a[i-1][j] + a[i][j] > 0 && b[i-1][j] == 0) { b[i-1][j] = 2; } if (a[i][j-1] + a[i][j] > 0 && b[i][j-1] == 0) { b[i][j-1] = 2; } if (a[i][j+1] + a[i][j] > 0 && b[i][j+1] == 0) { b[i][j+1] = 2; } } } } for (int i = 0;i < M;i++) { for (int j = 0;j < N;j++) { flg = 0; if (b[i][j] != 0 && a[i][j] < 0) { b[i][j] = 0; for (int k = 0;k < M;k++) { for (int l = 0;l < N;l++) { if (b[k][l] != 0) { if ((b[k+1][l] <= 0 || b[k+1][l] > 2)&& (b[k-1][l] <= 0 || b[k-1][l] > 2)&& (b[k][l+1] <= 0 || b[k][l+1] > 2)&& (b[k][l-1] <= 0 || b[k][l-1] > 2)) { flg = 1; } } } } if (flg) { b[i][j] = 2; } } } } for (int i = 0;i < M;i++) { for (int j = 0;j < N;j++) { if (b[i][j] != 0) { cout << a[i][j] << "\t"; sum += a[i][j]; } else { cout << "**" << "\t"; } } cout << endl; } cout << "sum = " << sum << endl; }
六.运行结果:
相关文章推荐
- 读取文件
- 使用maven创建项目和cannot change version web module 3.0
- 将一个像素绘制到屏幕上
- BZOJ2659: [Beijing wc2012]算不出的算式
- 关于css外部引用注意事项
- 最大连通数组
- ActionContextCleanUp作用
- 052(二十四)
- Python自然语言处理:词干、词形与MaxMatch算法
- 简单git操作
- DATE
- 对于redis底层框架的理解(一)
- 禅道项目管理软件
- jquery-通过下拉菜单更改input日期
- 欢迎使用CSDN-markdown编辑器
- 使用struts2实现上传下载功能(附代码)。类似于ftp服务器。不止局限于本机的上传下载,其他机器也可使用此功能,服务器似的功能
- 随笔之ros多线程
- android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中
- 基于echo例子的netty4通信总结
- “睡眠猴子”团队项目及成员介绍