第9周项目2对称矩阵压缩存储的实现与应用1
2015-12-11 08:43
387 查看
算法及代码:
运行结果:
#include <stdio.h> #include <malloc.h> #define N 4 //为N阶对称矩阵初始化存储数据的一维数组B void Init(int *&b) { b = (int*)malloc(sizeof(int)*(N*(N+1)/2)); } //返回存储在b[M]中,对应二维数组A[i][j]的值 int Value(int b[], int i, int j) { if (i>=j) return b[(i*(i+1))/2+j]; else return b[(j*(j+1))/2+i]; } //将e赋值给对应二维数组元素A[i][j],要存储到B[M]中 void Assign(int b[], int e, int i, int j) { if (i>=j) b[(i*(i+1))/2+j] = e; else b[(j*(j+1))/2+i] = e; return; } //输出压缩存储在b中的对称矩阵 void Disp(int b[]) { int i,j; for (i=0; i<N; i++) { for (j=0; j<N; j++) printf("%4d",Value(b,i,j)); printf("\n"); } } //销毁存储空间 void Destroy(int b[]) { free(b); } int main() { int *b1; //指向整型的指针,待初始化 int i, j; int v; Init(b1); printf("请输入对称矩阵(只需要输入下三角部分即可)\n"); for(i=0;i<N;i++) { printf("输入第%d行的%d个数据元素: ", i+1, i+1); for(j=0; j<=i; j++) { scanf("%d", &v); Assign(b1, v, i, j); } } Disp(b1); Destroy(b1); return 0; }
运行结果:
相关文章推荐
- 第十五周 项目1 验证算法
- 第十五周项目2-用哈希法组织关键字
- OPENCV不规则ROI-圆形ROI
- H264中NAL帧识别
- Xcode 7.1 - Unable to find execution service for selected run destination
- 有穷自动机
- 重载
- 第十二周项目4-利用遍历思想求解图问题(6)
- 第十二周项目三 图遍历算法实现
- 我是ptspzy
- MVC框架基础
- 第四周 项目3 单链表应用(1)
- LeetCode 221 Maximal Square
- Quartz.NET学习系列
- Xcode iOS布局autolayout和sizeclass的使用
- cs231n 问题
- 要引入java吸管工具
- 第15周项目1-验证算法
- 第十四周 项目3 是否二叉排序树
- Linux控制器(Controller)与适配器(Adapter)