求出一个整型数组的最大子集和
小组成员: 杨世超 李夏蕾
这是我们软件工程老师上课进行的结对小组实践题目,我们两个人商量了思路,和具体的解题过程
下面是我们的解题思路:
首先动态的输入数组元素
然后通过三层的for循环来进行遍历数组
第一层循环是数组的开始部分,第二层是数组子集的元素个数,第三层是求其相应的和,并与每一次的max相比较,保留最大值。
从每一个的开端一个一个遍历,先求出以a[0]开始的所有子集,再依次求出以a[i]开头的所有子集,并依此保留一次遍历的最大值,及其相应的长度,利用数组存储对应的最大值和长度,最后再进行比较,并输出最大值和数组最大子集。
在这个过程中,由于循环的利用导致有的时候循环的数目不对或者是初始化放错了地方等等,在此过程中,我们进行了一点一点的修改,利用单步跟踪调试,一点一点的看到底是哪里出错了,最终才完成了如下的模块:
for(i=0;i<n;i++){length=1; max=a[i];for(j=1;j<=n-i;j++){sum=0;for(k=i;k<i+j;k++){sum=sum+a[k];}if(max<=sum){max=sum;length=j;}b[i]=max;c[i]=length;}}
最后通过数组进行比较每一次的遍历最大值,然后求出最终的结果
程序源代码如下:
#include<iostream>
#define N 100
using namespace std;
int main()
{int n,t;int sum;int i,k,j;int a[N],b[N],c[N];int max;int length;cout<<"请输入数组的个数:"<<endl;cin>>n;cout<<"请输入数组元素:"<<endl;for(i=0;i<n;i++){cin>>a[i]; } for(i=0;i<n;i++){length=1; max=a[i];for(j=1;j<=n-i;j++){sum=0;for(k=i;k<i+j;k++){sum=sum+a[k];}if(max<=sum){max=sum;length=j;}b[i]=max;c[i]=length;}}max=b[0];t=0;for(i=0;i<n;i++){ if(max<b[i]) {max=b[i];t=i;}}cout<<"最大子数组和是:";cout<<max<<endl;cout<<"子序列为"<<endl;for(i=t;i<t+c[t];i++){cout<<a[i]<<endl;}
}
为了检测程序的性能,我们用了如下的一些数据:
(1)数组只有一个元素
(2)数组最大子集的开头有0
(3)数组最大子集的末尾有0
(4)数组元素有正有负
由于很多地方不一定能实现,所以在测试时我们进行了一系列的修改,让它能满足要求,比如说数组中前一个0不输出,后一个0不输出,等等问题,都进行了相应的修改
下面是我们测试结果截图:
转载于:https://www.cnblogs.com/yangshichao/p/3592517.html
求出一个整型数组的最大子集和相关推荐
- 求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。
功能:求出N×M整型数组的最大元素及其所在的行坐标及 列坐标(如果最大元素不唯一,选择位置在最前面 的一个). 例如:输入的数组为: 1 2 3 4 15 6 12 18 9 10 11 2 求出的最 ...
- C++:找出一个整型数组中最大值。
题目概述: 找出一个整型数组中最大值. 编程: #include< iostream> using namespace std; class array_max //声明类 { publi ...
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
package demo;import java.util.Arrays;/** 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.*/ //num ...
- C语言试题三十五之找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。主函数中x是数组名,n 是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
1. 题目 请编写一个函数function,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回.主函数中x是数组名,n 是x中的数据个数,max存放最大值,i ...
- 数组-接口2-参数为一个整型数组和数组长度的整数(该数组输入和运算结果),再加一个整数;预期结果是一个整型数组
测试接口的代码说明 适用接口:参数为一个整型数组和数组长度的整数(该数组输入和运算结果),再加一个整数:预期结果是一个整型数组 测试接口的具体代码如下: 注意红色字体,用后续小节中的接口进行替换,进行 ...
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次
题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次 解答: 我们从头到尾异或数组中的每个数字,那么最终的结果是两个只出现一次数字的异或的结果,由于两个数字不一样,那么异或的结果肯定不为0, ...
- 数组排序:声明一个整型数组并填充数据,排序,输出排序后数据,倒序输出数据。
数组排序:声明一个整型数组并填充数据,排序,输出排序后数据,倒序输出数据. int[] arr = new int[10];for (int i = 0;i<arr.length;i++){ar ...
- c定义一个整型数组_滨州学院C语言作业讲解有序数组插入
点击蓝字 关注我们 + 滨州学院C语言作业详解 [问题描述]一个长度为11的整型数组中存放有10个从小到大排好序的整数:1 3 5 10 23 100 180 200 350 500.输入一个x,把它 ...
- 算法:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。(异或符号的妙用)
异或的性质: 1.交换律 2.结合律(即(a^b)^c == a^(b^c)) 3.对于任何数x,都有x^x=0,x^0=x 4.自反性 A XOR B XOR B = A xor 0 = A 算法 ...
- c语言中一个整型数组结束用 0表示吗,C语言程序设计0数组.ppt
C语言程序设计0数组 第七章 数 组 数组的定义:是有序数据的集合. 数组的特点:数组中的每个元素都属于同一数据类型. 数组的访问:我们用一个统一的数组名和下标来唯一地确定数组中的元素. 7.1 一维 ...
最新文章
- 如何看待计算机视觉未来的走向?
- 2021年春季学期-信号与系统-第三次作业参考答案-第六道题
- (转)类库 框架 模式
- linux c 宏 LONG_MAX LLONG_MAX
- python构建知识库_手把手教导实战Python Web项目
- 「后端小伙伴来学前端了」分析Vue脚手架结构
- SpringSecurity简单应用(二)
- 攻城不易守城更难,汇付天下该如何守住打下来的“江山”?
- linux之移动或重命名文件:mv
- AWS携手光环云助力2019第三届“中信建投证券杯”世界智能围棋公开赛
- 字节跳动小程序平台审核常见被拒情形
- Poco库完全使用手册
- Yar 搭建 RPC 服务
- 02_泰坦尼克号幸存者分析(上)
- 7个你不可不知的大数据定义
- VS2013+Ceres编译教程 Win7系统
- 获取Windows系统密码凭证 (゚益゚メ) 渗透测试
- java实现生成纯色图片代码实例
- 人工智能实验:蚁群算法求解TSP问题(Python代码实现,附有详细实验报告地址)
- 谜题20:我的类是什么?
热门文章
- UVA - 11437
- [转]编程的首要原则(s)是什么?
- ES6-字符串扩展-padStart(),padEnd()
- lombok的详细使用
- Linux基础命令---ckconfig
- Selenium 高阶应用之WebDriverWait 和 expected_conditions
- Thread 编程:简明(1) - 协作式取消 VS 线程终止
- Spring,Mybatis,Springmvc框架整合项目(第一部分)
- 条款4:确定对象被使用前已被初始化(Make sure that objects are initialized before they're used)...
- graphviz安装及使用