題目:返回乙個整數陣列中最大子陣列的和。
要求:輸入乙個整形陣列,陣列裡有正數也有負數。
陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。
如果陣列a[0]……a[j-1]首尾相鄰,允許a[i-1],…… a[n-1],a[0]……a[j-1]之和最大。
同時返回最大子陣列的位置。
求所有子陣列的和的最大值。
結對開發的夥伴:
部落格名:mr.繆
姓名:繆金敏
分析:這是在第四次程式的基礎上再加了首尾鏈結,所以我在原先的基礎上把輸入的陣列有重新在陣列末尾再生成了一遍,在動態規劃外圍再加乙個迴圈,從而實現計算a[0]-a[n]或者a[1]-a[n]-a[0]等等最大值計算,然後用乙個陣列記錄最大值和還有起始位址和結尾位址。然後輸出子陣列。
**:
1執行結果截圖://求一維陣列的最大子陣列2 王文奇 繆金敏 2016/3/26
2 #include3
using
namespace
std;45
int max(int a, int b) //
返回a和b中的最大值611
else
1215}16
17int
main()
18; //
最大子陣列的起始位置
23int end[10000] = ; //
最大子陣列的終止位置
24 cout << "
請輸入一組一維陣列(回車結束):
"<
25 cin >> array[0
];26
while (cin.get() != '
\n') //
回車結束
2730
for (j = i; j < 2 * i; j++) //
陣列末尾再生成了一遍
3134
int n = 0;35
36//
動態規劃陣列初始化
37while (true)50
//51
if (dynamic_planning[j - 1][1] >= dynamic_planning[j][0
])52
56//
結束下標的條件2:第二列的數大於等於第一列
57if (dynamic_planning[j][1] >= dynamic_planning[j][0
])58
6263
}64 sum[n] = max(dynamic_planning[i - 1][0], dynamic_planning[i - 1][1
]);65 n++;
66if (n ==i)
6770}71
int max = sum[0
];72 n = 0;73
for (j = 0; j < i; j++)
7480
}81 cout << "
最大的子陣列為:
"<
82if (start[n] <=end[n])
8388}89
else
9095
for (j = 0; j <= end[n]; j++)
9699
}100 cout <
101 cout << "
起始索引:
"<
102if (end[n] >=i)
103 cout << "
終止索引:
"<< end[n] -i;
104else
105 cout << "
終止索引:
"<
106 cout <
107//
cout << start << " " << end << endl;
108109 cout << "
最大的子陣列的和為:
"<< sum[n] <
110return0;
111 }
總結:這一次練習只是在上一次基礎上多加了一次迴圈,所以相對較為簡單。
專案計畫總結:
時間記錄日誌:
缺陷記錄日誌:
二維陣列最大子陣列的和 結對開發
程式要使用的陣列放在乙個叫 input.txt 的檔案中,檔案格式是 陣列的行數,陣列的列數,每一行的元素,用逗號分開 每乙個數字都是有符號32位整數,當然,行數和列數都是正整數。演算法思想 對於一維的陣列,我們可以很容易用動態規劃的方法求得最大子陣列 所以我們將i 0.n j i.n 列舉所有行的...
結對開發 二維陣列的最大子陣列和
題目 在原有的一位陣列上進行擴充套件,求二位陣列的最大子陣列的和 題目 返回乙個二維整數陣列中最大子陣列的和。要求 輸入乙個二維整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。結對程式設計要求 兩人結對完成程式設計任務。一人主...
連通最大子陣列和(結對開發)
題目 返回乙個二維陣列中最大子陣列的和 連通性 設計思路 把數按行分成幾個一維陣列,對於該一維陣列,求出他們的最大連續陣列之和,並且記錄下最大連續陣列的第一位和最後一位的位置,之後判斷幾個一維陣列的最大 連續陣列的位置是否相接或包括 如,第一行是1和4,第二行是3和5,這樣就相連 最後在加上沒有包括...