0 0 0 0 0 0
0 3 0 0 0 0
0 0 0 6 0 0
0 0 9 0 0 0
0 0 0 0 12 0
#include<iostream>
#include<iomanip>using namespace std;
int main()
{
int number[5][3] = {
{5, 6, 4}, //5表示一共5列,6表示6行,4表示有4个非0元素
{1, 1, 3}, //记录存储的第一个非0元素的行数,列数和对应的值,后面的含义相同
{2, 3, 6},
{3, 2, 9},
{4, 4, 12}
};
int k; //用来存储非零元素的索引
k = 1;
cout << "稀疏矩阵" << endl;
for (int i = 0; i < 5;i++)
{
for (int j = 0; j < 3;j++)
{
cout<<setiosflags(ios::left);
cout <<setw(10)<< number[i][j];
}
cout << endl;
}
cout << "还原稀疏矩阵:" << endl;
for (int i = 0; i < number[0][0];i++) //循环稀疏矩阵的列
{
for (int j = 0; j < number[0][1];j++) //循环稀疏矩阵的行
{
if (k <= number[0][2] && (i == number[k][0]) && (j == number[k][1])) //判断是否为非零元素,如果是非零元素则输出非零元素
{
cout << setw(5) << number[k][2];
k++;
}
else
cout << setw(5) << 0; //输出为0的元素
}
cout << endl;
}
return 0;
}