作業要求 | 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