本篇文章給大家分享的是有關(guān)C語言中怎么實(shí)現(xiàn)矩陣連乘,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
西盟ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!動態(tài)規(guī)劃法
題目描述:給定n個矩陣{A1,A2....An},其中Ai與Ai+1是可以相乘的,判斷這n個矩陣通過加括號的方式相乘,使得相乘的次數(shù)最少!
以矩陣鏈ABCD為例
按照矩陣鏈長度遞增計(jì)算最優(yōu)值
矩陣鏈長度為1時,分別計(jì)算出矩陣鏈A、B、C、D的最優(yōu)值
矩陣鏈長度為2時,分別計(jì)算出矩陣鏈AB、BC、CD的最優(yōu)值
矩陣鏈長度為3時,分別計(jì)算出矩陣鏈ABC、BCD的最優(yōu)值
矩陣鏈長度為4時,計(jì)算出矩陣鏈ABCD的最優(yōu)值
動歸方程:
分析:
k為矩陣鏈斷開的位置
d數(shù)組存放矩陣鏈計(jì)算的最優(yōu)值,d[i][j]是以第i個矩陣為首,第j個矩陣為尾的矩陣鏈的最優(yōu)值,i > 0
m數(shù)組內(nèi)存放矩陣鏈的行列信息,m[i-1]和m[i]分別為第i個矩陣的行和列(i = 1、2、3...)
c語言實(shí)現(xiàn)代碼:
#include <stdio.h> #define N 20 void MatrixChain(int p[N],int n,int m[N][N],int s[N][N]){ int i,j,t,k; int r; //記錄相乘的矩陣個數(shù)變量 for(i=1;i<=n;i++){ m[i][i]=0; //當(dāng)一個矩陣相乘時,相乘次數(shù)為 0 } //矩陣個數(shù)從兩個開始一次遞增 for(r=2;r<=n;r++){ //從某個矩陣開始 for(i=1;i<=n-r+1;i++){ //到某個矩陣的結(jié)束 j=i+r-1; //拿到從 i 到 j 矩陣連乘的次數(shù) m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j]; //拿到矩陣連乘斷開的位置 s[i][j]=i; //尋找加括號不同,矩陣連乘次數(shù)的最小值,修改 m 數(shù)組,和斷開的位置 s 數(shù)組 for(k=i+1;k<j;k++){ t=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j]; if(t<m[i][j]){ m[i][j]=t; s[i][j]=k; } } } } } int main(void){ int n,n1,m1,i,j=2; int p[N]={0}; //存儲矩陣的行和列數(shù)組 int m[N][N]={0}; //存儲矩陣與矩陣相乘的最小次數(shù) int s[N][N]={0}; //存儲矩陣與矩陣相乘斷開的位置 printf("請輸入矩陣個數(shù):\n"); scanf("%d",&n); for(i=1;i<=n;i++){ printf("請輸入第%d個矩陣的行和列(n1*m1 格式):",i); scanf("%d*%d",&n1,&m1); if(i==1){ p[0]=n1; p[1]=m1; } else{ p[j++]=m1; } } printf("\n記錄矩陣行和列:\n"); for(i=0;i<=n;i++){ printf("%d ",p[i]); } printf("\n"); MatrixChain(p,n,m,s); printf("\n矩陣相乘的最小次數(shù)矩陣為:\n"); for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ printf("%d ",m[i][j]); } printf("\n"); } printf("\n矩陣相乘斷開的位置矩陣為:\n"); for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ printf("%d ",s[i][j]); } printf("\n"); } printf("矩陣最小相乘次數(shù)為:%d\n",m[1][n]); return 0; }
以上就是C語言中怎么實(shí)現(xiàn)矩陣連乘,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前題目:C語言中怎么實(shí)現(xiàn)矩陣連乘-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://jinyejixie.com/article18/ccjhdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站建設(shè)、商城網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容