1、題目要求:
返回乙個二維陣列中最大連通子陣列的和
從input.txt 檔案中讀入乙個二維整形陣列,陣列裡有正數也有負數。
2、實現思路:
(1)先要能夠讀入txt 文件中的各數的值;
(2)將讀出的行數、列數、陣列中的數分別儲存;
(3)每一行都存在乙個最大的子陣列和;
(4)將每行最大的子陣列和以最小的代價連線起來,將代價與各個和加在一起,可以得出最大值
(1)讀入txt 文件中的各數的值,第一行是行數,存給 line ,第二行是列數,存到row,剩下的數存入陣列array【】【】中;
(2)從第一行開始,按照前幾次實驗的方法,找出每一行中的最大子陣列和,存入array2【】中;並找到這個最大子陣列和的陣列的最小下標min_i 和最大下標max_i 分別存入mini【】和maxi【】中;
(3)將每一行中的最大最小下標與下一行的最小最大
下標相比,聯通,則這兩行的最大子陣列和為兩行的最大子陣列和相加;
(4)若不能聯通,選擇乙個最小代價路徑使其聯通;
(5)看有無其他的正數與這一條聯通的線相連,若有,加到總和上。
4、源**:
1 #include 2 #include 3 #include5、執行結果:4using
namespace
std ;56
7int maxcount(int n,int a,int *min_i,int *max_i)//
求一行中的最大子陣列和8;
10int i,sum=0,max=0;11
for(i=0;i)
1217
else
1821 b[i]=sum;22}
23 max=b[0
];24
for(i=0;i)
2531}32
for (i = *max_i;i >= 0;i--)
3339}40
return
max;41}
4243
44int
main()
4554
intline,row;
55int array[100][100],array2[100];//
陣列array 是二維陣列,array2 是每行的最大子陣列和組成的陣列
56 infile.getline( str, sizeof(str) );//
獲取行數
57 sscanf( str , "
%d" , &line);
58 infile.getline( str, sizeof(str) );//
獲取列數
59 sscanf( str , "
%d" , &row );
60 cout <
二維陣列共
"<< line <
<< row<
61 cout <
二維陣列:
"<
62for(i=0;i//
讀取二維陣列
6368}69
for(i=0;i//
輸出二維陣列
7076 cout <
78infile.close();
7980
81int
min_i;
82int max_i;//
最大子陣列和數的下標
83int countmax;//
最大子陣列的和數的下標
84int
sum,max;
85int mini[100],maxi[100],t[100
];86
for(i=0;i)
8792 sum=maxcount(row,array2,&min_i,&max_i);
93 mini[i]=min_i; //
儲存最大和子陣列的最小下標
94 maxi[i]=max_i; //
儲存最大和子陣列的最大下標
95 t[i]=sum;96}
97 countmax=t[0
];98
for(i=0;i+1)99
104105
for(j=mini[i];j1];j++)
106
111}
112}
113 cout<
\n 最大聯通子陣列和為:
"114return0;
115 }
專案計畫日誌(單位:h):
聽課編寫程式
閱讀相關書籍
網上查詢資料
日總計週六02
00.5
2.5週日02
114周一
0201
3時間記錄日誌(單位:min):
日期開始時間
結束時間
中斷時間
淨時間活動
備註星期六
8:00
11:30
30(洗漱)
150查資料,程式設計
星期日8:30
11:00
140查資料,程式設計
15:00
18:00
100程式設計
星期一8:30
11:00
160查資料,程式設計
最大子陣列和
問題描述 給定乙個整數陣列a 0 n 求陣列a的子陣列,使其元素和為最大。問題分析 方法一 可以用普通的方法列舉所有的子陣列,然後求出最大的子陣列和,時間複雜度為o n n 方法二 問題描述符合動態規劃最優子結構的要求。設b i 表示以a i 結尾的子陣列的最大子段和,即 b i max,其中0 j...
最大子陣列和
給定乙個陣列 求出陣列的最大子陣列和 其中包含正,負 和0 很簡單把每個子陣列的和求出來話不多說看 方法1暴力求解法 把所有的子陣列都求解出來o n2 public static intgetmaxsubarr int arr return res 第二種方法 dp求解 很簡單理解加上當前的數arr...
最大子陣列和
使用動態規劃 f i 以array i 為末尾元素的子陣列的和的最大值,子陣列的元素的相對位置不變 f i max f i 1 array i array i res 所有子陣列的和的最大值 res max res,f i 如陣列 6,3,2,7,15,1,2,2 初始狀態 f 0 6 res 6 ...