最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對稱矩陣的壓縮儲存講解

 更新時間:2019年02月20日 15:28:14   作者:gogogo_sky  
今天小編就為大家分享一篇關(guān)于對稱矩陣的壓縮儲存講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

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

二、什么是對稱矩陣:

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

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

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

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

四、代碼實現(xiàn)

#include<iostream>
using namespace std;
template<class T>
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<sz;++i)
    {
      for(int j=0;j<sz;++j)
      {
        if (i>=j)//_data中儲存下三角的數(shù)據(jù)
        {
          _data[index]=arr[i*sz+j];
          index++;
        }
        else
          break;
      }
    }
  }
  //獲取某個坐標(biāo)的數(shù)據(jù),i和j代表該數(shù)據(jù)在矩陣中的橫縱坐標(biāo)
  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);//將橫坐標(biāo)和從坐標(biāo)值交換;
      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<<GetDate(i,j)<<" ";
      }
      cout<<endl;
    }
  }
  ~CompressionMatrix()
  {
    if (_data!=NULL)
    {
      delete[] _data;
      _data=NULL;
      _size=0;
    }
  }
protected:
  T* _data;//儲存數(shù)據(jù)的數(shù)組
  int _size;//儲存原始對稱矩陣的行數(shù)(或列數(shù))
};

測試代碼:

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<int> cm((int*)a,5);//將二維數(shù)組強制轉(zhuǎn)換為一維數(shù)組指針,是問題更簡單
  cm.PrintfMatrix();
  return 0;
}

五、運行結(jié)果

O(∩_∩)O

總結(jié)

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

相關(guān)文章

  • C語言中的sizeof操作符用法及和strlen的區(qū)別

    C語言中的sizeof操作符用法及和strlen的區(qū)別

    這篇文章主要介紹了C語言中的sizeof操作符用法及和strlen的區(qū)別,本文講解了sizeof的定義、sizeof的語法以及使用實例,最后給出sizeof與strlen的區(qū)別,需要的朋友可以參考下
    2015-07-07
  • C++實現(xiàn)LeetCode(164.求最大間距)

    C++實現(xiàn)LeetCode(164.求最大間距)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(164.求最大間距),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 如何用c語言完成俄羅斯方塊小游戲

    如何用c語言完成俄羅斯方塊小游戲

    這篇文章主要介紹了如何使用C語言開發(fā)一個簡單的俄羅斯方塊游戲,涵蓋了游戲設(shè)計、數(shù)據(jù)結(jié)構(gòu)、核心邏輯和實現(xiàn)步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • 詳細(xì)對比C語言中的chmod()函數(shù)和fchmod()函數(shù)

    詳細(xì)對比C語言中的chmod()函數(shù)和fchmod()函數(shù)

    這篇文章主要介紹了C語言中的chmod()函數(shù)和fchmod()函數(shù)的詳細(xì)對比,兩個都是用于修改文件權(quán)限但是請注意實際使用上的差異,需要的朋友可以參考下
    2015-09-09
  • C語言版二值圖像統(tǒng)計連通區(qū)域

    C語言版二值圖像統(tǒng)計連通區(qū)域

    這篇文章主要為大家詳細(xì)介紹了C語言版二值圖像統(tǒng)計連通區(qū)域的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言動態(tài)內(nèi)存函數(shù)(malloc、calloc、realloc、free)詳解

    C語言動態(tài)內(nèi)存函數(shù)(malloc、calloc、realloc、free)詳解

    在C語言中,動態(tài)內(nèi)存函數(shù)是塊重要的知識點,以往,我們開辟空間都是固定得,數(shù)組編譯結(jié)束后就不能繼續(xù)給它開辟空間了,開辟的空間滿了,就不能在開辟空間了,學(xué)習(xí)本文章,我們就可以解決這個問題,向內(nèi)存申請空間,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • QT5連接MySQL實現(xiàn)增刪改查

    QT5連接MySQL實現(xiàn)增刪改查

    這篇文章主要為大家詳細(xì)介紹了QT5如何連接MySQL實現(xiàn)增刪改查功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的可以了解一下
    2022-12-12
  • C++實現(xiàn)選擇排序(selectionSort)

    C++實現(xiàn)選擇排序(selectionSort)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)選擇排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • c語言計算三角形面積代碼

    c語言計算三角形面積代碼

    c語言計算三角形面積,這只是一個小作業(yè),大家一起學(xué)習(xí)C語言吧,面積公式s = (a+b+c) / 2 area = sqrt(s * (s - a) * (s - b) * (s - c))
    2013-11-11
  • 淺談C++反向迭代器的設(shè)計

    淺談C++反向迭代器的設(shè)計

    本文主要介紹了淺談C++反向迭代器的設(shè)計,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評論

武山县| 芜湖县| 南昌市| 诸暨市| 巴彦淖尔市| 封开县| 聂荣县| 龙口市| 读书| 临沂市| 高安市| 军事| 修水县| 南陵县| 天峻县| 信阳市| 漯河市| 平阳县| 海晏县| 眉山市| 莱西市| 胶州市| 霍山县| 阿拉善右旗| 昆山市| 诸城市| 开封县| 长岭县| 蕉岭县| 精河县| 张家口市| 古浪县| 和林格尔县| 靖边县| 凤城市| 佛山市| 台南县| 施甸县| 黄石市| 遵化市| 博野县|