返回乙個二維陣列最大聯通子陣列的和

2022-09-17 00:39:11 字數 516 閱讀 4057

一.題目

輸入乙個二維整形陣列,陣列裡有正數也有負數。

求所有子陣列的和的最大值。

二.設計思想

方法一:首先若要對二維陣列進行分析,之前我們已經做過關於一位陣列的練習,所以我們可以把它化簡成為乙個一維陣列。再先求每個一維陣列的最大子陣列和,並記下每行最大一維子陣列的下標。這是就會分兩種情況:第一種是行之間的最大子陣列是相連的,這時就可以直接相加得到;第二種是不相連的,,這時候就把每行的最大子陣列看成乙個整體,再使每個最大陣列塊進行相連,求使其相連的最小代價。最後得到的結果就是最大聯通子陣列的和。

方法二:在二維整形陣列中,資料可能會有正也有負,要求最大值,我們可以把關注的重點放在正數上,所以要首先判斷二維陣列中哪些位置上的數是正數,利用另乙個二維陣列記錄正數的位置,然後判斷哪些數是連通的。首先定位這個二維陣列中的最大值,然後在分析這個值周圍的4個數,聯通這4個數中的正數,若全為負數,則查詢次大值,並與最大值聯通,判斷聯通前與聯通後值得大小,若變小則不聯通最大值,若變大則聯通最大值,以此類推,直到最大聯通子陣列怎麼聯通都比原來的值小。

返回乙個二維陣列中最大聯通子陣列的和

設計思路 對n m的二維陣列進行分解,分解為n個一維陣列,再先求這n個一維陣列的最大子陣列和,並記下每行最大一維子陣列的下標如2 5,這是就會分兩種情況第一種是行之間的最大子陣列是相連的,如第一行是2 5,第二行是3 6,這是直接相加就行。第二種是不相連的如第一行是2 5,第二行是6 7,這時候就把...

返回乙個二維整數陣列中最大聯通子陣列的和

一 題目 輸入乙個二維整形陣列,陣列裡有正數也有負數。求所有子陣列的和的最大值。二 設計思想 方法一 首先若要對二維陣列進行分析,通常想要把它化簡成為乙個一維陣列。再先求每個一維陣列的最大子陣列和,並記下每行最大一維子陣列的下標。這是就會分兩種情況 第一種是行之間的最大子陣列是相連的,這時就可以直接...

返回乙個二維整數陣列中最大聯通子陣列的和

題目 返回乙個二維整數陣列中最大聯通子陣列的和 要求 輸入乙個二維整形陣列,陣列裡有正數也有負數。求所有子陣列的和的最大值 include include include using namespace std define max 100 void main cout for int i 0 if...