91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 9KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-05
  • 語言: C/C++
  • 標簽: 矩陣相乘??

資源簡介

矩陣相乘,普通算法的時間界是10的3此方,而采用strassen算法可提高運算效率。

資源截圖

代碼片段和文件信息

#include?“stdio.h“
#include
#define?mytype?int//矩陣元素的數據類型
#define?myinputmode?“%d“//矩陣元素的輸入格式
#define?myprintmode?“%4d“//矩陣元素的輸出格式
/*以上參數的設置可根據所計算矩陣的元素的數值類型進行相應改變
如更改為浮點型數據則可以使用下面的設置
#define?mytype?float
#define?myinputmode?“%f“
#define?myprintmode?“%6.2f“
*/
/////////////////////////////////////////
/****************************************
函數名:is2
參數:m為長整型整數
功能:檢測m是否是2的正整數次冪
返回值:返回布爾型變量
????????true則表示m為2的正整數次冪
??false則表示m不是2的正整數次冪
****************************************/
int?is2(int?m)
{
?if(m<0)return?0;
?if(m>=2)
?{
??if((m%2)==0)?return?is2(m/2);
??else?return?0;
?}
?else
?{
??if(m==1)return?1;
??else?return?0;
?}
?return?0;
}
/////////////////////////////////////////
/****************************************
函數名:inputmatrix
參數:M為指向數組的指針,用來存儲輸入的矩陣
??????m長整型,是數組M所存矩陣的維數
???name字符型數組,是需要進行數據輸入的矩陣的名字
功能:矩陣數據輸入的函數,通過輸入矩陣的每個元素將
??????矩陣存入數組
返回值:無
****************************************/
void?inputmatrix(mytype?*?Mint?mchar?*nameint?a[][200])
{
?int?ij;
?for(i=0;i??for(j=0;j??{
???
???M[i*m+j]=a[i+1][j+1];
??
??}
}
/////////////////////////////////////////
/****************************************
函數名:printmatrix
參數:M為指向數組的指針,數組中存儲著矩陣
??????m長整型,是數組M所存矩陣的維數
???name字符型數組,是需要進行數據輸入的矩陣的名字
功能:矩陣數據輸出顯示的函數,將矩陣元素一一顯示一在屏幕上
返回值:無
****************************************/
void?printmatrix(mytype?*?Mint?mint?nchar?*name)
{
?int?ij;
?for(i=0;i?{
??for(j=0;j??{
???printf(myprintmodeM[i*m+j]);
??}
??printf(“\n“);
?}
}
void?printmatrix2(mytype?*?Mint?Nint?mint?nchar?*name)
{
?int?ijk;
?for(k=0i=0;k?{
??for(j=0;j??{
???printf(myprintmodeM[i+j]);
??}
??printf(“\n“);
?}
}
/////////////////////////////////////////
/****************************************
函數名:Matrix_add_sub
參數:A,B為指向數組的指針,數組中存儲著矩陣
???C為指向數組的指針,用來存儲運算結果
??????m長整型,是數組A、B、C所存矩陣的維數
???add為布爾型變量,為true則C=A+B,為false則C=A-B
功能:根據add值對A、B進行加減運算并將結果存入C
返回值:無
****************************************/
void?Matrix_add_sub(mytype?*?Amytype?*?Bmytype?*?Cint?mint?add)
{
?long?i;
?for(i=0;i?{
??if(add==1)
???C[i]=A[i]+B[i];
??else
???C[i]=A[i]-B[i];
?}
}
/////////////////////////////////////////
/****************************************
函數名:GetHalfValue
參數:B為指向數組的指針,數組中存儲著矩陣。其中B是指向m維矩陣中的一個元素。
???A為指向數組的指針,用來接收B中的四分之一數據
??????m長整型,是數組B所指矩陣的維數
功能:從B所在位置向左和向右取矩陣的m/2維的子矩陣(子矩陣中包括B所指元素)并存入A
返回值:無
****************************************/
void?GetHalfValue(mytype?*?Amytype?*?Bint?m)
{
?int?ij;
?for(i=0;i?{
??for(j=0;j??{
???A[i*m/2+j]=B[i*m+j];
??}
?}
}
/////////////////////////////////////////
/****************************************
函數名:UpdateHalfValue
參數:B為指向數組的指針,數組中存儲著矩陣。其中B是指向m維矩陣中的一個元素。
???A為指向數組的指針,存儲著一個m/2維矩陣
??????m長整型,是數組B所指矩陣的維數
功能:把A矩陣所有元素存入從B所在位置向左和向右的m/2維的子矩陣(子矩陣中包括B所指元素)
返回值:無
****************************************/
void?UpdateHalfValue(mytype?*?A

評論

共有 條評論