亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

對稱矩陣及對稱矩陣的壓縮存儲

發布時間:2020-07-21 23:32:59 來源:網絡 閱讀:413 作者:清幽寧 欄目:編程語言

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


壓縮存儲稱矩陣存儲時只需要存儲上三角/下三角的數據,所以最多存儲n(n+1)/2個數據。

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

對稱矩陣及對稱矩陣的壓縮存儲

        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

Symmetry.h中
template < class T>
class Symmetry
{
public:
	//構造函數
	Symmetry(T* arr, size_t size)
		:_arr(new T[size*(size+1)/2])
		, _size(size*(size + 1)/2)
	{
		for (int i = 0; i < size; i++)
		{
			for (int j = 0; j < size; j++)
			{
				if (i >= j)
				{
					_arr[i*(i + 1) / 2 + j] = arr[i*size + j];//把對稱矩陣壓縮
				}
			}
		}
	}
	//打印
	void Print(size_t size)
	{
		for (int i = 0; i < size; i++)
		{
			for (int j = 0; j < size; j++)
			{
				int row = i;
				int col = j;
				if (row < col)
				{
					swap(row, col);
				}
					cout << _arr[row*(row+ 1) / 2 + col] << " ";
			}
			cout << endl;
		}
		cout << endl;
	}
protected:
	T *_arr;
	size_t _size;
};
test.cpp中
#include <iostream>
using namespace std;
#include "Symmetry.h"
void Test()
{
	int arr[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}
	};
	Symmetry<int>s((int*)arr, 5);
	s.Print(5);
}
int main()
{
	Test();
	system("pause");
	return 0;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高密市| 吉木萨尔县| 建水县| 武威市| 如皋市| 肇州县| 青浦区| 东乡族自治县| 乐亭县| 河北省| 丹棱县| 调兵山市| 大港区| 德格县| 乐亭县| 龙门县| 公主岭市| 昂仁县| 锡林郭勒盟| 晋宁县| 大同市| 丹阳市| 新兴县| 凤凰县| 临邑县| 汝阳县| 溧阳市| 福鼎市| 新沂市| 昭苏县| 马公市| 巨野县| 星座| 那坡县| 清丰县| 嘉祥县| 三河市| 安塞县| 咸宁市| 苏尼特右旗| 双鸭山市|