实现对称矩阵以及压缩存储
来源:互联网 发布:写java源代码的步骤 编辑:程序博客网 时间:2024/05/16 19:03
对称矩阵压缩存储
压缩矩阵:对称矩阵存储时只需要存储上三角或下三角的数据,所以最多存储 n*(n+1)/2个数据。
在存数据的 时候我们只需要将一半的数据存入一个一维数组中:
当然包含对角线元素
如果我们想要通过保存的这个一维数组的内容打印出二维数组的内容那么就要根据极具特色的行和列
#include<iostream>#include<stdlib.h>using namespace std;class Special_Matrix{public: friend ostream& operator<<(ostream&_cout, Special_Matrix& s); Special_Matrix(int Row,int Col) :_row(Row) , _col(Col) , _pData(NULL) { } ~Special_Matrix() { if (_pData) { delete[]_pData; _pData = NULL; } } void Init_Special_Matrix() { _pData = new int [_row*(_col+ 1) / 2]; } void Assign_Special_Matrix(int e,int i,int j)//设置这个特殊矩阵 { if (i >= j) { _pData[i*(i + 1) / 2 + j] = e; } else { swap(i,j); _pData[i*(i + 1) / 2 +j] = e; } } int Value(int i, int j) { if (i >= j) return _pData[(i*(i + 1)) / 2 + j]; else { swap(i, j); return _pData[(i*(i + 1)) / 2 + j]; } }private: int _row; int _col; int *_pData;};ostream& operator<<(ostream&_cout, Special_Matrix& s){ for (int i = 0; i<s._row; i++) { for (int j = 0; j < s._col; j++) { _cout << s.Value(i, j) << " " << " "; } _cout << endl; } return _cout;}void FunTest(){ Special_Matrix s(5, 5); s.Init_Special_Matrix(); int d = 0; for (int i = 0; i < 5; i++) { printf("输入第%d行的%d个数据元素: ", i + 1, i + 1); for (int j = 0; j <= i; j++) { cin >> d; s.Assign_Special_Matrix(d,i,j);//存下三角数据 } } cout << s;}int main(){ FunTest(); system("pause"); return 0;}
0 0
- 实现对称矩阵以及压缩存储
- C++实现对称矩阵以及压缩存储
- 【C++】实现对称矩阵以及压缩存储
- c++实现对称矩阵的压缩存储
- 对称矩阵压缩存储
- 对称矩阵压缩存储
- 对称矩阵 压缩存储
- 对称矩阵压缩存储
- 对称矩阵和稀疏矩阵以及它们的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- ~对称矩阵的压缩存储~
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 机器学习、数据挖掘方面好书、网站推荐
- 组件之navigator、ListView
- iOS逆向工程使用LLDB的USB连接调试第三方App
- 固定在一天的某个时间刷新一次程序
- 盈利与营销部分
- 实现对称矩阵以及压缩存储
- tensorflow函数解析: tf.Session() 和tf.InteractiveSession()
- React Native获得View相对于屏幕的坐标x,y
- 欢迎使用CSDN-markdown编辑器
- QT实现对数据文本保存的办法及其操作
- JAVA实现DES的ECB/CBC的加密算法
- (转)Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)
- SQL查询
- ES HDFS快照坑之could not read repository data from index blob