上一題(有序數對)
最優子矩陣
【題目描述】
給定乙個n*n的矩陣
對於乙個k*k的子矩陣(k任意)
設a為其主對角線上的元素之和(主對角線即左上-右下對角線)
設b為其副對角線上的元素之和
求乙個k*k的子矩陣,使得其a-b最大。
【輸入資料】
第一行乙個整數n,表示矩陣的大小,以下n行,每行n個數,描述這個矩陣
【輸出資料】
乙個數,表示最大的a-b
【輸入樣例】
3-3 4 5
7 9 -2
1 0 -6
【輸出樣例】
5【友情提示】
選擇樣例中紅色的子矩陣即可
【資料約定】
30%資料滿足n≤5
60%資料滿足n≤50
100%資料滿足2≤n≤400,矩陣中元素的絕對值≤1000
(特別友好的還有友情提示)
一開始看見這個就硬斗(emm就是出個大概的框架然後把樣例帶進去算,出關係式),後來老師講解的時候才發現原來要用字首和(對角線的字首和)講完之後發現其實很簡單...
主要思路就是將二維陣列上的每乙個點的對角線字首和求出來,然後再求出不同矩形的主對角線之和and副對角線之和,再比較求出最大差值。
**如下
#includeusing namespace std;
int f[405][405],a[405][405],b[405][405],x,y,all;
int main()
for(int k=2;k<=n;k++) }
cout
}
最優矩陣連乘
time limit 1 ms memory limit 128 mb difficulty 3 乙個n m矩陣由n行m列共n m個數排列而成。兩個矩陣a和b可以相乘當且僅當a的列數等於b的行數。乙個n m的矩陣乘以乙個m p的矩陣等於乙個n p的矩陣,運算量為nmp。矩陣乘法滿足結合律,a b c...
最優矩陣連乘
乙個n m矩陣由n行m列共n m個數排列而成。兩個矩陣a和b可以相乘當且僅當a的列數等於b的行數。乙個n m的矩陣乘以乙個m p的矩陣等於乙個n p的矩陣,運算量為nmp。矩陣乘法滿足結合律,a b c可以表示成 a b c或者是a b c 兩者的運算量卻不同。例如當a 2 3 b 3 4 c 4 ...
最優矩陣連乘問題
1.引言 多矩陣連乘 對於一般的矩陣乘法來說,如矩陣a m,n 與矩陣b n,p 相乘需要進行的加法次數為m n p次乘法。由於矩陣乘法滿足結合律,因此矩陣相乘的結合性,會影響整個計算表示式的乘法執行次數。如下面的例子,其中a 10,5 b 5,20 c 20,3 1 ab c 執行乘法次數為130...