首页 > 其他题解 > A+B for Matrices

A+B for Matrices

这几天准备做点简单的ACM题目,激活一下脑细胞,防老年痴呆。
题目名称:A+B for Matrices(原来matrix的复数形式是matrices啊?好久不接触英语,竟然发现还有这等复数形式……)
This time, you are supposed to find A+B where A and B are two matrices, and then count the number of zero rows and columns.

题目大意:给定两个矩阵,矩阵的最大大小是M*N(小于等于10),矩阵元素的值的绝对值小于等于100,求矩阵相加后全0的行以及列数。
解决方法:开一个记录数组res[M+N];先进行矩阵相加,如果result[i][j]不为0,则res[i]置为1,res[M + i]也置为1.结束之后统计res中元素为0的个数即可。

解题代码:

// Author: 代码疯子
// Blog: http://www.programlife.net/
#include <stdio.h>
#include <string.h>
 
#define M 12
 
int matrix[2][M][M];
int res[M + M];
 
int main(int argc, char **argv)
{
	int i, j, m, n, nresult;
 
	while (EOF != scanf("%d", &m) && m)
	{
		memset(res, 0, sizeof(res));
		nresult = 0;
		scanf("%d", &n);
		for (i = 0; i < m; ++i)
		{
			for (j = 0; j < n; ++j)
			{
				scanf("%d", &matrix[0][i][j]);
			}
		}
		for (i = 0; i < m; ++i)
		{
			for (j = 0; j < n; ++j)
			{
				scanf("%d", &matrix[1][i][j]);
				matrix[1][i][j] += matrix[0][i][j];
				if (matrix[1][i][j])
				{
					res[i] = res[m + j] = 1;
				}
			}
		}
		for (i = 0; i < m + n; ++i)
		{
			if (!res[i])
			{
				++nresult;
			}
		}
		printf("%d\n", nresult);
	}
	return 0;
}

觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> A+B for Matrices
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: 其他题解 标签: , ,
  1. cpusctech
    2011年8月31日09:11 | #1

    楼主你这个能AC吗?我觉得输出形式不对啊

    [回复]

    代码疯子 回复:

    @cpusctech, 能的。我交过了。

    [回复]

  2. 2012年2月10日20:47 | #2

    不能减支了吗? [em011]

    [回复]

    代码疯子 回复:

    @Akagi201, 没有优化的代码,原来保研的时候看的别的学校的题目,那种一般只求过了

    [回复]

  3. FOOLISH
    2013年1月29日00:22 | #3

    小弟初学者,想问一下,main后面的两个引用参数是什么意思

    [回复]

    代码疯子 回复:

    @FOOLISH, 第一个参数argc是int类型,表示命令行参数的个数;第二个是一个char **类型,是一个二维的char指针,可以理解一个二维的字符数组,表示命令行字符串,其中第一个就是应用程序本身的路径,后面的是指定的字符串参数。

    可以参考:http://zh.wikipedia.org/wiki/%E4%B8%BB%E5%87%BD%E5%BC%8F#C.2FC.2B.2B
    http://www.programlife.net/standard-c-main.html

    这个说的比较清楚:http://blog.pfan.cn/malei/46013.html

    [回复]

    FOOLISH 回复:

    @代码疯子, 学到了很多,感谢!!

    [回复]