【2036】将稀疏矩阵转化为简式

Time Limit: 20 second
Memory Limit: 20 MB

问题描述
大部分元素为0的矩阵称为稀疏矩阵,假设有k个非0元素,则可以把稀疏矩阵用k*3的矩阵简记之,其中第一列是行号,第二列是列号,第三列是该行、该列下的非0元素的值。试编制一程序,读入一稀疏矩阵,并转换成简记形式输出!
例如:


Input

输入第一行为矩阵的行列数,这个例子中我们暂且按照行列数等于N计算(n取小于10 的数)。
换行后输入矩阵的内容,矩阵中非零的元素数据范围在-99到+99之间。

Output

输出转换后的简式。(场宽为3)

Sample Input

4
0 0 0 5
2 0 0 0
0 1 0 0
0 0 0 0

Sample Output

  1  4  5
  2  1  2
  3  2  1  回车
(场宽为3)
 

【题解】

边读边操作,遇到一个不是0的数字就输出行,列和这个数字。

【代码】

#include <cstdio>

const int MAXN = 11;

int n,a[MAXN][MAXN];

void input_data()
{
	scanf("%d",&n);
	for (int i = 1;i <= n;i++)
		for (int j = 1;j <=n;j++)  //直接读入 边操作。 
			{
				scanf("%d",&a[i][j]);
				if (a[i][j]!=0)
					{
						printf("%3d%3d%3d
",i,j,a[i][j]);
					}
			}
}

int main()
{
	//freopen("F:\rush.txt","r",stdin);
	input_data();
	return 0;	
}


 

原文地址:https://www.cnblogs.com/AWCXV/p/7632469.html