【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\n",i,j,a[i][j]); } } } int main() { //freopen("F:\\rush.txt","r",stdin); input_data(); return 0; }