返回整數陣列中最大子陣列的值(陣列首尾相連)
阿新 • • 發佈:2018-11-04
應王老師要求,返回子陣列的作業又來啦!這次的陣列是首尾相連的
預計時間:兩小時
實際時間:週四上課15分鐘+週日13:20-14:30
先說一下我的想法,之前的作業都是可以直接遍歷整個陣列,因為陣列的長度是一定的,迴圈結束後就可以獲得到所有子陣列。但是這次作業的前提是陣列首尾相連,遍歷整個陣列是無法結束的。所以我可以先想象環狀的陣列斷開,利用二維陣列把斷開陣列的每個數被包含的子陣列再次存放,再去遍歷求子陣列的和,那麼接下來的程式就和之前的一樣了。
程式:
#include<iostream>#define n 100
using namespace std;
void main()
{
int a[n], b[n][n];
int length, i, j, w = 0, p = 0, q = 0, temp, m;
cout << "請輸入陣列的值" << endl;
for (length = 0;;)
{
cin >> a[length];
length++;
if (getchar() == '\n')
{
break;
}
}
cout << "這個陣列的長度為:" << length << endl;
for (i = 0; i<length; i++)
{
m = i;
w = 0;
j = 0;
while (j <= length - 1)
{
w += a[m];
b[i][j] = w;
m++;
if (m>length - 1)
{
m = 0;
}
j++;
}
}
temp = b[0][0];
for (i = 0; i<length; i++)
{
for (j = 0; j<length; j++)
{
if (b[i][j]>temp)
{
temp = b[i][j];
p = i;
q = j;
}
}
}
cout << "最大子陣列的值為:" << temp << endl;
cout << endl;
}