0.前言
1.矩阵设置
2.矩阵相乘
3.稀疏矩阵
4.稀疏矩阵的普通转置
5.矩阵的转置後相乘
6.快速稀疏矩阵转置演算法
期中快到ㄌ
最近打算把学到的观念都弄成笔记整理,对内容也能更深的了解
小弟只是刚接触程序半年的菜鸡,若有观念错误或不佳处还请见谅QQ
int main()
{
Data Matrix1;
set_size(&Matrix1);
set_content(&Matrix1);
show_content(Matrix1);
}
struct data
{
int row;
int col;
int content[MAX][MAX];
};
typedef struct data Data;
void set_size(Data *Matrix)
{
do
{
printf("输入row:");
scanf("%d", &Matrix->row);
printf("输入col:");
scanf("%d", &Matrix->col);
} while (Matrix->row <= 0 || Matrix->col <= 0);
}
void set_content(Data *Matrix)
{
for (int i = 0; i < Matrix->row; i++)
{
for (int j = 0; j < Matrix->col; j++)
{
scanf("%d", &(Matrix->content[i][j]));
}
printf("\n");
}
}
void show_content(Data Matrix)
{
printf("距阵为:\n");
for (int i = 0; i < Matrix.row; i++)
{
for (int j = 0; j < Matrix.col; j++)
{
printf("%d\t", Matrix.content[i][j]);
}
printf("\n");
}
}
int main()
{
Data Matrix1, Matrix2, Matrix3;
Sparse content1[MAX], content2[MAX], content3[MAX];
set(&Matrix1, &Matrix2, &Matrix3);
Mult(Matrix1, Matrix2, &Matrix3);
show_content(Matrix3);
}
void set(Data *M1, Data *M2, Data *M3)
{
do
{
set_size(&*M1);
set_content(&*M1);
set_size(&*M2);
set_content(&*M2);
} while (M1->col != M2->row);
show_content(*M1);
show_content(*M2);
M3->row = M1->row;
M3->col = M2->col;
}
void Mult(Data M1, Data M2, Data *M3)
{
for (int i = 0; i < M1.row; i++)
{
for (int j = 0; j < M2.col; j++)
{
int all = 0;
for (int k = 0; k < M2.row; k++)
{
all += M1.content[i][k] * M2.content[k][j];
}
M3->content[i][j] = all;
}
}
}
int main(){
Data Matrix1;
Sparse content1[MAX];
set_size(&Matrix1);
set_content(&Matrix1);
show_content(Matrix1);
matrix_to_sparse(Matrix1, content1);
show_sparse(content1);
}
struct sparse
{
int row;
int col;
int content;
};
typedef struct sparse Sparse;
void matrix_to_sparse(Data Matrix, Sparse sparse_Matrix[])
{
int k = 1;
for (int i = 0; i < Matrix.row; i++)
{
for (int j = 0; j < Matrix.col; j++)
{
if (Matrix.content[i][j] != 0)
{
sparse_Matrix[k].content = Matrix.content[i][j];
sparse_Matrix[k].row = j;
sparse_Matrix[k].col = i;
k++;
}
}
}
k--;
sparse_Matrix[0].content = k;
sparse_Matrix[0].row = Matrix.row;
sparse_Matrix[0].col = Matrix.col;
}
int main(){
Data Matrix1;
Sparse content1[MAX];
set_size(&Matrix1);
set_content(&Matrix1);
printf("转置前:");
show_content(Matrix1);
turn(&Matrix1, content1);
printf("转置後:");
show_content(Matrix1);
}
void turn(Data *Matrix, Sparse content[])
{
change_matrix_to_sparse(*Matrix, content);
sparse_to_matrix(&*Matrix, content);
}
void change_matrix_to_sparse(Data Matrix, Sparse sparse_Matrix[])
{
int k = 0;
for (int i = 0; i < Matrix.col; i++)
{
for (int j = 0; j < Matrix.row; j++)
{
if (Matrix.content[j][i] != 0)
{
k++;
sparse_Matrix[k].content = Matrix.content[j][i];
sparse_Matrix[k].row = i;
sparse_Matrix[k].col = j;
}
}
sparse_Matrix[0].content = k;
sparse_Matrix[0].row = Matrix.row;
sparse_Matrix[0].col = Matrix.col;
}
}
void sparse_to_matrix(Data *Matrix, Sparse sparse_Matrix[])
{
Matrix->col = sparse_Matrix[0].row;
Matrix->row = sparse_Matrix[0].col;
for (int i = 0; i < Matrix->row; i++)
{
for (int j = 0; j < Matrix->col; j++)
{
Matrix->content[i][j] = 0;
}
}
int num = sparse_Matrix[0].content;
for (int i = 1; i <= num; i++)
{
Matrix->content[sparse_Matrix[i].row][sparse_Matrix[i].col] = sparse_Matrix[i].content;
}
}
以下待补
以下待补
<<: 【我可以你也可以的Node.js】第二五篇 - 蛞蝓能不能变蜗牛 #租房是残忍的 #我好想要有个家
谷歌官方多年前推出可疑网址报告这个扩展程序,原本这个扩展程序是帮助用户检测恶意网站和反馈恶意网站的。...
我们今天要使用的资料集就是在机器学习世界鼎鼎大名的 MNIST(Modified National...
=x= 🌵 建立 Yacht Manager - Content Page 後台页面。 Home 前...
接下来要回去弄日K交易策略,先把网格交易机器人打包起来独立成一个档案,还有把登入的部分打包起来,未来...
在上一篇内容中我们透过 Docker Compose 同时开启了网站服务和资料库。透过简单的操作就可...