91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

發布時間: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

丰台区| 舟山市| 绥宁县| 民勤县| 专栏| 海晏县| 广丰县| 北宁市| 宁明县| 克东县| 陵水| 元朗区| 汕尾市| 通许县| 宁明县| 双牌县| 凌云县| 沁阳市| 咸宁市| 仪陇县| 阳山县| 文水县| 鹤岗市| 聂拉木县| 甘谷县| 盐边县| 青州市| 南川市| 中阳县| 通道| 遂昌县| 永靖县| 周宁县| 寿宁县| 聂荣县| 仙游县| 托克逊县| 白河县| 贞丰县| 黑山县| 建平县|