计算与软件工程 作业3
作业要求 | https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454 |
课程目标 | 了解软件工程相关知识并进行实践 |
作业在哪个具体方面帮我实现目标 | 对代码的理解,实现对数组中最大子数组求和。 |
参考文献 | https://www.cnblogs.com/xinz/archive/2011/11/20/2255830.html https://www.cnblogs.com/SivilTaram/p/software_pretraining_cpp.html |
作业正文 | https://i-beta.cnblogs.com/posts/edit |
#include <stdio.h>
#include<iostream>
#include<vector>
#include <stdlib.h>
using namespace std;
int getmax(int data[],int length)
{
int temp=0,start=0,end=0,i=0,num=0,max=0,flag=0;
while(i<length)
{
if(data[i]>0)
{
temp=i;
while(temp<length)
{
num+=data[temp];
if(num<0) //当num<0时退出这个循环
{
num=0;
i=temp+1;
break;
}
if(num>max) //不加=说明若存在多个最大子数组时取第一个,加上=说明取最后一个
{
start = i;
max=num;
end = temp;
//cout<<i<<" "<<temp<<endl;
}
temp++;
}
if(temp>=length) //当temp已经循环到数组最后一位,则结束整个外层循环
break;
}
else
{
i++;
flag++; //用来记录负数出现的次数
}
}
if(flag==length) //数组全为负数的情况
{
int max=data[0];
for(i=1;i<length;i++)
{
if(data[i]>max)
{
max=data[i];
}
}
return max;
}
for(i=start;i<=end;i++) //打印最大子数组
cout<<data[i]<<" ";
cout<<endl;
return max;
}
int main()
{
int data[] = {-31,-41,-59,13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7,-26,-53,-58,-97,-23,-84,-93};
int length = sizeof(data) / sizeof(int);
cout<<getmax(data,length)<<endl;
system("pause");
}
博客作业
在信息与计算科学专业的五个学期中,关于计算机方面,学习了c++与java两种语言,相关课程有c++程序设计,java程序设计,数据结构、操作系统、asp网页设计、数据库。在前几个学期中,完成了矩阵旋转,火车票系统预定,校园网站等课程设计,能够用编程解决一些小的数学问题。由于并没有打算日后从事计算机行业的工作,对于代码的学习也止于书本作业,大二暑期调研参观过家附近一些需要计算数学相关人员的公司,如果日后要从事计算机行业的话,对代码的熟练运用是目前的自己最欠缺的。
码云链接:https://gitee.com/hxf981221/gitee_yellow/blob/master/%E4%BD%9C%E4%B8%9A3.cpp