结对开发Ⅴ——循环一维数组求和最大的子数组
2015-03-27 23:48
232 查看
一、设计思路
(1)数据的存储结构是链表,最后一个结点的next指向第一个元素的结点;
(2)数据个数为n,则最多有n*(n+(n-1)+...+1)种情况(包括重复);
(3)剩下的部分与二维数组的差不多。
二、源代码
三、运行截图
四、心得体会
这次最大的感受就是,我们两个都有各自的思路想法,都想向对方阐述自己的想法,导致无法很好地接受倾听对方的声音。我觉得他的方法浪费内存空间,他认为他的查找过程清晰明了。最终还是于海洋同学妥协了,采用的是我的思路,用循环链表。开发过程还是像上两次差不多,个人有个人的优缺点,可以相互弥补。调试程序时,也是我俩共同协作排查出了错误。
五、无图无真相
(1)数据的存储结构是链表,最后一个结点的next指向第一个元素的结点;
(2)数据个数为n,则最多有n*(n+(n-1)+...+1)种情况(包括重复);
(3)剩下的部分与二维数组的差不多。
二、源代码
// 一维数组.cpp : Defines the entry point for the console application. // 袁佩佩 于海洋 #include "stdafx.h" #include<iostream.h> #define num 5 /*链表数据结构*/ typedef struct LNode { int data; struct LNode *next; }LNode,*LinkList; /*链表的初始化*/ void InitList(LinkList &L) { L=new LNode; L->next=NULL; } /*链表数据的插入*/ void InsertList(LinkList &L)//建立循环链表 { LNode *head,*temp; head=L; cout<<"请输入"<<num<<"个数字:"; for(int i=0;i<num;i++) { temp=new LNode; cin>>temp->data; temp->next=NULL; head->next=temp; head=head->next; } head->next=L->next; //首尾相连,建立循环链表 } void output(LinkList L) { for(int i=0;i<num;i++) { cout<<L->next->data<<" "; L=L->next; } } int main( ) { int max,sum,flag=0; //sum是字数组的和,max是最大的子数组的和 int ordern=0,orderx=0; LinkList L; LNode *temp,*temp1,*temp2,*head; InitList(L); InsertList(L); //由用户往链表中插入数据 temp=L->next; max=L->next->data; //max初值是链表中第一个数 for(int i=0;i<num;i++,temp=temp->next) { temp2=temp; for(int j=0;j<num;j++,temp2=temp2->next) { for(int k=j;k<num;k++) { sum=0; temp1=temp2; for(int h=j;h<=k;h++,temp1=temp1->next) { sum=sum+temp1->data; } if(max<sum) //将最大值赋给max,并且保存当时的序号 { max=sum; ordern=j; orderx=k; head=temp; flag=i; //用来求取最大值的时候的链表的情况 } } } } temp=L->next; cout<<"最大字数组是:"; for(i=0;i<(flag+ordern);i++) //找出取得最大值的时候的子数组的第一个数 { temp=temp->next; } for(int j=0;j<(orderx-ordern+1);j++,temp=temp->next)//将取得最大和的子数组元素输出 { cout<<temp->data<<" "; } cout<<endl<<"最大子数组的和是:"<<max<<endl;; return 0; }
三、运行截图
四、心得体会
这次最大的感受就是,我们两个都有各自的思路想法,都想向对方阐述自己的想法,导致无法很好地接受倾听对方的声音。我觉得他的方法浪费内存空间,他认为他的查找过程清晰明了。最终还是于海洋同学妥协了,采用的是我的思路,用循环链表。开发过程还是像上两次差不多,个人有个人的优缺点,可以相互弥补。调试程序时,也是我俩共同协作排查出了错误。
五、无图无真相
相关文章推荐
- 结对开发-- 循环一维数组求和最大的子数组
- 结对开发Ⅵ——循环二维数组求和最大的子数组
- 结对开发-- 一维数组求和最大的子数组 (大数溢出)
- 体验结对开发的乐趣(1)--(一维数组求和最大的子数组)
- 结对开发Ⅱ——二维数组求和最大的子数组
- 结对开发-- 一维数组求和最大的子数组的大数溢出问题
- 结对开发Ⅳ——一维数组求和最大的子数组(大数溢出)
- 结对开发4_循环数组的最大值
- 结对开发5_循环二维数组最大字数组
- 体验结对开发的乐趣(2)--(二位数组求和最大的子数组)
- 结对项目——可循环的最大子数组
- 软件工程结对开发——一维最大子数组求和溢出问题
- 循环数组,求和最大子数组
- 求一维数组的最大子数组1(结对开发)
- 结对开发——一维数组最大子数组判断溢出
- 结对开发之首尾相连二维数组求最大子数组
- 求一维数组的最大子数组2(结对开发)
- 结对开发-求环状二维数组最大子数组
- 结对开发——循环数组的最大值
- 结对开发--循环一维数组求最大子数组的和