UVa442矩陣鏈乘 棧

2021-09-11 09:22:58 字數 969 閱讀 2279

題目如下:

我用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...