作业要求 | 第三次作业 |
---|---|
我在这个课程的目标是 | 增强自己对计算机的认识 |
此作业在哪个具体方面帮我实现目标 | 通过写更多代码,了解跟多知识 |
其他参考文献 | [https://www.jianshu.com/p/917a674dafd8] |
代码链接 | [https://gitee.com/zhang_ying_wei/learngit/blob/master/main.cpp] |
作业正文
(部分来源于[https://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html])
单元测试
数组中最大子数组的和。
用类/函数来实现
需求:希望返回 3 种信息
最大子数组的和
最大子数组开始的下标
最大子数组结束的下标
从文本文件中读输入的数据,熟悉文件操作, 文件有两种数据
第一个数字:这次测试中有多少个数据, 数字后面是冒号。
后续数字: 每个数据的值,用逗号隔开
比如
文件内容:
17: -32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61
输出
sum = 71
代码
#include<iostream>
#include<cstdlib>
using namespace std;
int getmax(int array[],int length)
{
int sum = 0;
int max = 0;
int startIndex = 0; //记录子数组的起始位置
int endIndex = 0; //记录子数组的终止位置
int newStartIndex = 0;
for (int i = 0; i < length; i++) //遍历整个目标数组
{
if (max < 0)
{
max = array[i];
newStartIndex = i;
}
else
{
max += array[i];
}
if (sum < max) //如果此时 sum < temp;
{
sum = max;
startIndex = newStartIndex;
endIndex = i;
}
}
return max;
}
int getstartIndex(int array[],int length)
{
int sum = 0;
int max = 0;
int startIndex = 0;
int endIndex = 0;
int newStartIndex = 0;
for (int i = 0; i < length; i++)
{
if (max < 0)
{
max = array[i];
newStartIndex = i;
}
else
{
max += array[i];
}
if (sum < max)
{
sum = max;
startIndex = newStartIndex;
endIndex = i;
}
}
return startIndex;
}
int getendIndex(int array[],int length)
{
int sum = 0;
int max = 0;
int startIndex = 0;
int endIndex = 0;
int newStartIndex = 0;
for (int i = 0; i < length; i++)
{
if (max < 0)
{
max = array[i];
newStartIndex = i;
}
else
{
max += array[i];
}
if (sum < max)
{
sum = max;
startIndex = newStartIndex;
endIndex = i;
}
}
return endIndex;
}
int main()
{
int array[]={-32,-10,33,-23,32,-12,41,-12,1,3,5,-98,70,-21,10,-9,61};
int length=17;
cout<<"最大子数组的和:"<<getmax(array,length)<<endl;
cout<<"最大子数组开始的下标:"<<getstartIndex(array,length)<<endl;
cout<<"最大子数组结束的下标:"<<getendIndex(array,length)<<endl;
system("pause");
return 0;
}
由于我使用的是xcode,在网上未能寻找到详细的教程,单元测试未成功运行。
博客正文
回顾总结你在信息与计算科学专业前两年的学习经历和项目技能等,写一篇关于你自己的简历,介绍你的技能,并针对未来准备从事的职业,评价你目前的技术、能力是否胜任,(个人能力的评价可以参考软件工程师个人能力评价表https://www.cnblogs.com/xinz/p/3852177.html),并针对未来的职业发展方向,指明还有哪些技术、技能需要在后续大学一年的时间里需要加强的。
介绍
大一刚开始我就学习了c语言,那个时候我们能做的就是写一些简单的文字,计算数字。大二的时候我们又学习了java, matlab,不知不觉我们了解了更多有关计算机的内容,我个人对于计算机的学习并没有十分认真,这也许和我以后并没有想从事计算机行业的打算有关。但是像之前看到的,就算我没有想要从事相关工作,我也不应该懈怠,而是认真努力地完成学习。现在学习软件工程让我对以前大一大二的时候学习的计算机课程有了新的认识,没有以前的学习,可能现在我连最基本的代码都不会写,所以,至少在这门课程中我要好好写代码,认真完成老师布置的任务。
作业链接:[https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454]