#C05L11P01. C05.L11.二维数组综合.引例1.稀疏矩阵.填空题

C05.L11.二维数组综合.引例1.稀疏矩阵.填空题

题目描述

n*m 矩阵大部分元素是 0 的矩阵称为稀疏矩阵,假设有 k 个非 0 元素,则可把稀疏矩阵用 K*3 的矩阵简记之,其中第一列是行号,第二列是列号,第三列是该行、该列下的非元素的值。如:

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

写简记成:

1 4 5      //第1行第4列有个数是5
2 2 2      //第2行第2列有个数是2
3 2 1      //第3行第2列有个数是1

试编程读入一稀疏矩阵,转换成简记形式,并输出。

输入格式

第一行为 n 和 m , n 为行数, m 为列数( 1 <= n , m <= 100 );

接下来是一个 n*m 的矩阵,矩阵中每个正整数小于 1000 。

输出格式

输出矩阵的简记形式(输出的先后顺序,首先按行、同行的话按列依次递增顺序输出)。

样例

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

完成程序

#include<bits/stdc++.h>
using namespace std;
const int N=101;
int n,m,a[N][N];
int main()
{
	scanf("%d%d",&m,&n);
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			scanf("%d",填空(1));
	
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			if(填空(2))
				printf("%d %d %d\n",填空(3),j,填空(4));

	return 0;
}

填空(1):{{ input(1) }}

填空(2):{{ input(2) }}

填空(3):{{ input(3) }}

填空(4):{{ input(4) }}