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;
}