EOJ2140

A+B

Time Limit:1000MS Memory Limit:65536KB
Total Submit:1734 Accepted:558

Description 

相信大家都会做两个整数的A+B了,今天我们把它扩展到矩阵,如果给你两个N*M的矩阵,你会做么? 

Input 

第一行一个数C(1<=C<=100),表示测试数据的组数,对于每组测试数据:
开始有两个数N,M(1<=N<=1000,1<=M<=1000)表示输入N*M的矩阵,然后有2*N行,每行有M个数,先后表示两个矩阵A,B.

Output 

对于每组测试数据,输出一个N*M的矩阵表示A+B的和. 

Sample Input 

2
3 4
1 2 3 4
2 3 4 5
2 3 4 6
5 6 7 8
2 3 4 5
6 5 4 2
2 2
1 2
3 4
4 3
2 1

Sample Output 

6 8 10 12
4 6 8 10
8 8 8 8
5 5
5 5

#include <stdio.h>

int a[1000][1000] = {0};

int main(){
    int N = 0, M = 0, i = 0, j = 0, T = 0;
    scanf("%d", &T);
    int m = 0;

    while(T--){
        scanf("%d %d", &N, &M);
        for(i = 0; i < N; i++)
            for(j = 0; j < M; j++)
                scanf("%d", &a[i][j]);

        for(i = 0; i < N; i++)
            for(j = 0; j < M; j++){
                scanf("%d", &m);
                a[i][j] += m;
            }
        for(i = 0; i < N; i++){
            printf("%d", a[i][0]);
            for(j = 1; j < M; j++)
                printf(" %d", a[i][j]);
            printf("\n");
        }
    }
    return 0;
}



不太懂为什么下面一个会超时,能是分配内存的时间远比操作的时间多?

但上面一个过了。。。用空间复杂度换时间复杂度呀。

#include <stdio.h>
#include <stdlib.h>

int main(){
    int N = 0, M = 0, i = 0, j = 0, T = 0;
    char **a;
    scanf("%d", &T);
    int m = 0;

    while(T--){
        scanf("%d %d", &N, &M);
        a = (char **)malloc(sizeof(char *) * N);

        for(i = 0; i < N; i++){
            a[i] = (char *)malloc(sizeof(char) * M);
            for(j = 0; j < M; j++)
                scanf("%d", &a[i][j]);
        }
        for(i = 0; i < N; i++)
            for(j = 0; j < M; j++){
                scanf("%d", &m);
                a[i][j] += m;
            }
        for(i = 0; i < N; i++){
            printf("%d", a[i][0]);
            for(j = 1; j < M; j++)
                printf(" %d", a[i][j]);
            printf("\n");
            free(a[i]);
        }
        free(a);
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值