作業三
作業要求 | https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454 |
---|---|
課程目標 | 學會軟件簡單語言,完成簡單軟件功能的開發 |
此作業在哪個具體方面幫我實現目標 | 代碼運行,尋找bug |
作業正文 | https://www.cnblogs.com/limin123/p/12455500.html |
代碼運行結果
代碼:
#include<iostream>
#include<cstdlib>
using namespace std;
int getmax(int array[],int length)
{
int sum = 0; //記錄當前連續子數組的最大和
int max = 0; //記錄當前數組連續幾個元素的和(當其值小於0時,重新對其賦值;【即:拋棄前面的所有元素】)
int startIndex = 0; //記錄子數組(和最大)的起始位置
int endIndex = 0; //記錄子數組(和最大)的終止位置
int newStartIndex = 0; //記錄子數組(和最大)的新的起始位置
for (int i = 0; i < length; i++) //遍歷整個目標數組
{
if (max < 0) //如果max < 0;則要對max重新賦值
{
max = array[i]; //對max重新賦值
newStartIndex = i; //暫時記錄子數組(和最大)的新的起始位置(要看后續的sum 和 max是否發生交換)
}
else
{
max += array[i]; //如果max >= 0;則要繼續將此時的數組元素(array[i])加入到max中
}
if (sum < max) //如果此時 sum < max;則表示此時的子數組和大於之前的子數組和
{
sum = max; //將大的子數組和max賦值給sum
startIndex = newStartIndex; //子數組(和最大)的新的起始位置起作用了
endIndex = i; //子數組(和最大)的終止位置(只要發生交換就說明endIndex發生變化)
}
}
return max;
}
int getstartIndex(int array[],int length)
{
int sum = 0; //記錄當前連續子數組的最大和
int max = 0; //記錄當前數組連續幾個元素的和(當其值小於0時,重新對其賦值;【即:拋棄前面的所有元素】)
int startIndex = 0; //記錄子數組(和最大)的起始位置
int endIndex = 0; //記錄子數組(和最大)的終止位置
int newStartIndex = 0; //記錄子數組(和最大)的新的起始位置
for (int i = 0; i < length; i++) //遍歷整個目標數組
{
if (max < 0) //如果temp < 0;則要對temp重新賦值
{
max = array[i]; //對max重新賦值
newStartIndex = i; //暫時記錄子數組(和最大)的新的起始位置(要看后續的sum 和 max是否發生交換)
}
else
{
max += array[i]; //如果max >= 0;則要繼續將此時的數組元素(array[i])加入到max中
}
if (sum < max) //如果此時 sum < max;則表示此時的子數組和大於之前的子數組和
{
sum = max; //將大的子數組和max賦值給sum
startIndex = newStartIndex; //子數組(和最大)的新的起始位置起作用了
endIndex = i; //子數組(和最大)的終止位置(只要發生交換就說明endIndex發生變化)
}
}
return startIndex;
}
int getendIndex(int array[],int length)
{
int sum = 0; //記錄當前連續子數組的最大和
int max = 0; //記錄當前數組連續幾個元素的和(當其值小於0時,重新對其賦值;【即:拋棄前面的所有元素】)
int startIndex = 0; //記錄子數組(和最大)的起始位置
int endIndex = 0; //記錄子數組(和最大)的終止位置
int newStartIndex = 0; //記錄子數組(和最大)的新的起始位置
for (int i = 0; i < length; i++) //遍歷整個目標數組
{
if (max < 0) //如果max < 0;則要對max重新賦值
{
max = array[i]; //對max重新賦值
newStartIndex = i; //暫時記錄子數組(和最大)的新的起始位置(要看后續的sum 和 max是否發生交換)
}
else
{
max += array[i]; //如果max >= 0;則要繼續將此時的數組元素(array[i])加入到max中
}
if (sum < max) //如果此時 sum < max;則表示此時的子數組和大於之前的子數組和
{
sum = max; //將大的子數組和max賦值給sum
startIndex = newStartIndex; //子數組(和最大)的新的起始位置起作用了
endIndex = i; //子數組(和最大)的終止位置(只要發生交換就說明endIndex發生變化)
}
}
return endIndex;
}
int main()
{
int length,i=0;
cout<<"請輸入個數:";
cin>>length;
cout<<"請輸入數組:";
int array[1000]={0};
for(i=0;i<length;i++)
{
cin>>array[i];
}
cout<<"最大子數組的和為:"<<getmax(array,length)<<endl;
cout<<"最大子數組起始下標:"<<getstartIndex(array,length)<<endl;
cout<<"最大子數組結束下標:"<<getendIndex(array,length)<<endl;
system("pause");
return 0;
}
博客作業
從大一到大三,我們也學過很多計算機方面的課程,有MS Office,C++,java,matlab...這些都是簡單的軟件,我也只是學習了一些簡單的操作學習建立文件,操作代碼,運行代碼,但都只是一些皮毛,希望在未來的大學生活里學習更多的有關於編程之類的知識,提高自己的技能。
碼雲代碼:https://gitee.com/li_min_123/software_engineering/tree/master/