真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

對稱矩陣的壓縮儲存講解

一、存儲矩陣用一個二維數(shù)組即可;

目前成都創(chuàng)新互聯(lián)公司已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管運營、企業(yè)網(wǎng)站設(shè)計、托克遜網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

對稱矩陣的壓縮儲存講解

二、什么是對稱矩陣:

設(shè)一個N*N的方陣A,A中任意元素Aij,當且僅當 Aij == Aji(0 <= i <= N-1&& 0 <= j <= N-1),則矩陣A是對稱矩陣。以矩陣的對角線為分隔,分為上三角和下三角

三、對稱矩陣的壓縮儲存:

壓縮存儲稱矩陣存儲時只需要存儲上三角/下三角的數(shù)據(jù),所以最多存儲n(n+1)/2個數(shù)據(jù)(相當于1+2+…+n,即等差數(shù)列求和)。

對稱矩陣和壓縮存儲的對應關(guān)系:下三角存儲i>=j, SymmetricMatrix[i][j] ==Array[i*(i+1)/2+j]

四、代碼實現(xiàn)

#include
using namespace std;
template
class CompressionMatrix
{
public:
  CompressionMatrix(T* arr,int sz)
    :_data(new T[sz*(sz+1)/2])
    ,_size(sz)
  {
    int index=0;
    //壓縮儲存過程
    for(int i=0;i=j)//_data中儲存下三角的數(shù)據(jù)
        {
          _data[index]=arr[i*sz+j];
          index++;
        }
        else
          break;
      }
    }
  }
  //獲取某個坐標的數(shù)據(jù),i和j代表該數(shù)據(jù)在矩陣中的橫縱坐標
  T GetDate(int i,int j)
  {
    if (i>=j)//下三角數(shù)據(jù)
    {
      return _data[i*(i+1)/2+j];
    }
    else//上三角數(shù)據(jù)
    {
      std::swap(i,j);//將橫坐標和從坐標值交換;
      return _data[i*(i+1)/2+j];
    }
  }
    //打印矩陣的數(shù)據(jù)
  void PrintfMatrix()
  {
    for (int i=0;i<_size;++i)
    {
      for (int j=0;j<_size;++j)
      {
        cout<

測試代碼:

int main()
{
  int a[5][5]=
  {
    {0,1,2,3,4},
    {1,0,1,2,3},
    {2,1,0,1,2},
    {3,2,1,0,1},
    {4,3,2,1,0},
  };
  CompressionMatrix cm((int*)a,5);//將二維數(shù)組強制轉(zhuǎn)換為一維數(shù)組指針,是問題更簡單
  cm.PrintfMatrix();
  return 0;
}

五、運行結(jié)果

對稱矩陣的壓縮儲存講解

O(∩_∩)O

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對創(chuàng)新互聯(lián)的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接


文章名稱:對稱矩陣的壓縮儲存講解
網(wǎng)頁地址:http://weahome.cn/article/gogsog.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部