• 软件工程课堂测试07(结对开发)


    软件工程课堂测试07(结对开发)

    一.设计思路

    1.初始化一个单链表,用来储存输入的数字

    2.输入数字n,控制链表长度

    3.后插法,初始化一个n个结点的循环链表

    4.输入n个正负整数,赋值给单链表的数字域,连接单链表成循环链表

    5.定义3个变量,用2个for循环来找元素组合成连续子数组之和最大得值

    6.第一个for循环实现从第一个数字起到最后一个数字起形成的n个元素组合成连续子数组之和最大得值

    7.第二个for循环实现从第i个数字起找n个元素组合成连续子数组之和最大得值

    8.输出元素组合成连续子数组之和最大得值

    二.源程序代码

     1 //输入数字串形成一个环,找出子数组的和的最大值   谷伟华、牛俊燕    2016.4.13
     2 #include<iostream>
     3 using namespace std;
     4 typedef struct LNode
     5 {
     6     int num;   //数字域
     7     struct LNode *next;   //指针域
     8 }LNode,*LinkList;
     9 void CreateList_H(LinkList &L,int n) //后插法,初始化一个n个节点的循环链表
    10 { //正位序输入n个元素的值,建立带表头结点的单链表L
    11     L=new LNode;
    12     L->next=NULL;  //先建立一个带头结点的空链表
    13     LinkList r,p;
    14     r=L;            //尾指针r指向头结点
    15     for(int i=0;i<n;i++)
    16     {
    17         p=new LNode;  //生成新的结点
    18         cout<<"请输入第"<<i+1<<"个数字:"<<endl;
    19         cin>>p->num;   //输入元素值赋给新结点*p的数字
    20         p->next=NULL; r->next=p; //将新结点*p插入到尾结点*r之后
    21         r=p;           //r指向新的尾结点*p
    22     }
    23     r->next=L->next;  //指针r指向头结点,形成循环单链表
    24 }
    25 void main()
    26 {
    27     LinkList L;
    28     int n;
    29     cout<<"请输入数字的个数:";
    30     cin>>n;
    31     CreateList_H(L,n);  //调用函数,创建列表
    32     int i,j,bj,max,Max;
    33     LNode *q;  //建立新的指针*q,让它在循环单列表上进行移动
    34     q=L;
    35     Max=q->next->num;    //Max初始化初始化为第1个数字的值
    36     for(i=0;i<n;i++)  //循环n次,
    37     {
    38         bj=q->next->num;    //bj初始化为第i个数字的值
    39         max=q->next->num;   //max初始化为第i个数字的值
    40         for(j=i+1;j<i+n-1;j++)  //从j=i+1开始循环n-1次
    41         {
    42             if(bj>0)
    43             { //如果前j-1个数字的子数组的和的最大值>0,那么max=bj+第j个数字
    44                 max=bj+q->next->next->num;
    45             }
    46             else
    47             { //否则max=第j个数字
    48                 max=q->next->next->num;
    49             }
    50             q->next=q->next->next;   //q指针向后移动
    51             bj=max;   //将max赋给bj
    52         }
    53         if(Max<max)
    54         {   //每一轮的max和Max比较取最大值
    55             Max=max;
    56         }
    57         q->next=q->next->next;   //q指针向后移动
    58     }
    59     cout<<"子数组的最大值是:"<<Max<<endl;    //输出最大值
    60 }

    三.结果截图

    四.两人合作中的过程、体会以及如何解决冲突

    上一次的四则运算的几次迭代作业都是我的搭档写的,我寻思这次作业简单,就让我负责程序分析,代码编程,她负责代码复审和代码测试计划,但是当我把我的代码给她之后,她觉得应该用数据结构中循环链表来解决这个问题,于是我们又展开了一番讨论,最终决定用循环链表来解决,这次的作业让我有一个深刻的体会,当拿到一个题目时,和搭档讨论完之后,不论谁是负责程序分析,代码编程的,谁是负责代码复审和代码测试计划的,我们都应该动手自己做一做,即使思路一样,但是做法还是会有不同,做完之后要相互交流,以达到共同进步的目的。

    五.附结对开发的工作照

  • 相关阅读:
    结果填空:青蛙爬井
    天上的星星 (前缀和)
    Poj3253 Fence Repair (优先队列)
    Requests+BeautifulSoup+正则表达式爬取猫眼电影Top100(名称,演员,评分,封面,上映时间,简介)
    数字图像处理之几种滤波器
    CodeForces
    直方图部分
    Codeforces Round #431 (Div. 2)
    2017中国大学生程序设计竞赛
    C++中数字与字符串之间的转换(转载自http://www.cnblogs.com/luxiaoxun/)
  • 原文地址:https://www.cnblogs.com/gzgz/p/5386383.html
Copyright © 2020-2023  润新知