題目如下:
我用c語言實現的**如下:
#include #define maxn 1000+10
typedef structmatrix;
typedef structstack;
int n;//開頭有幾個矩陣
stack s;
matrix m[maxn];//存開始給的矩陣,最多26個
matrix pop(stack* s)//出棧
void init(stack* s)//初始化棧
void push(stack* s,matrix m)//壓棧
int main()
char expr[maxn];//儲存表示式
getchar();//吃掉最後乙個矩陣後面的回車
while(gets(expr))//如果前面矩陣的列數不等於後面矩陣的行數則鏈乘失敗,退出
ans += m1.a*m1.b*m2.b;//否則計算次數
m1.b = m2.b;//讓m1變成相乘後的新矩陣
push(&s,m1);//把新矩陣壓棧}}
if(error) printf("error\n");//如果失敗就顯示「error」
else printf("%d\n",ans);//成功則顯示次數}}
效果截圖如下:
uva442 矩陣鏈乘
題目大意 給你若干個矩陣 x y 然後給你若干種計算公式,問你在該種計算公式情況下能否進行矩陣乘法運算,若能進行,輸出需進行乘法的次數。思路分析 首先要對矩陣的乘法運算有一定了解,首先,a xy 和b xy 矩陣能否進行ab運算的充要條件是是否滿足a.y b.x,如果滿足,則會得到矩陣c a.xb....
UVA442矩陣乘法之求出多個矩陣相乘乘法的次數
這個題自己剛開始寫的,受前面那個題的影響開了倆個棧,乙個拿來存括號了,然而這個題保證輸入合法,不需要將括號入棧,另外自己剛開始還重重載了矩陣賦值函式,後來發現矩陣竟然不需要過載賦值函式,不知道為什麼矩陣不需要 過載賦值函式。include include include include includ...
Uva348最優矩陣鏈乘
題意 給出 n 個矩陣 a1,a2,an 求完全括號化方案,使得計算乘積 a1a2 an 所需乘法次數最少。並輸出方案。思路 經典區間dp。要求的是 0,n 1 的最小代價。且大區間的決策依賴於小區間。矩陣連乘的最後一定有乙個最後一次乘法,假設最後乙個乘號在第 k 個矩陣後,也就是p a1 x a2...