列表

详情


BC138. 矩阵转置

描述

KiKi有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。

输入描述

第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)

从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。

输出描述

输出m行n列,为矩阵转置后的结果。每个数后面有一个空格。

示例1

输入:

2 3
1 2 3
4 5 6

输出:

1 4 
2 5 
3 6 

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 284KB, 提交时间: 2020-12-06

#include<stdio.h>
int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    int tmp[n][m];
    int res[m][n];
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            scanf("%d ", &tmp[i][j]);
            res[j][i] = tmp[i][j];
        }
    }
    for(int i = 0; i < m; i++) {
        for(int j = 0; j < n; j++) {
            printf("%d ", res[i][j]);
        }
        printf("\n");
    }
}

C 解法, 执行用时: 1ms, 内存消耗: 300KB, 提交时间: 2021-09-08

#include <stdio.h>
int main()
{
    int n=0;
    int m=0;
    scanf("%d %d",&n,&m);
    int i=0;
    int j=0;
    int arr[n][m];
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        
    {
        scanf("%d",&arr[i][j]);
    }
    }
    for(i=0;i<m;i++)//3
    {
        for(j=0;j<n;j++)//2
        {
            printf("%d ",arr[j][i]);
        }
        printf("\n");//
    }
    
    
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 328KB, 提交时间: 2021-09-11

#include <stdio.h>

int main()
{
    int n = 0;
    int m = 0;
    int arr1[10][10] = {0};
    int arr2[10][10] = {0};
    scanf("%d %d", &n, &m);
    
    int i = 0;
    int j = 0;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < m; j++)
        {
            scanf("%d", &arr1[i][j]);
        }
    }
    
    for(i = 0; i < m; i++)
    {
        for(j = 0; j < n; j++)
        {
            arr2[i][j] = arr1[j][i];
        }
    }
    
    for(i = 0; i < m; i++)
    {
        for(j = 0; j < n; j++)
        {
            printf("%d ", arr2[i][j]);
        }
        printf("\n");
    }

    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 332KB, 提交时间: 2021-07-24

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main(){

	int arr[10][10];
    int arr1[10][10];
	int n = 0, m = 0, x = 0;
	scanf("%d %d", &n, &m);

	for (int i = 0; i < n; i++){
		for (int j = 0; j < m; j++){
			scanf("%d", &x);
			arr[i][j] = x;
		}
	}
	for (int i = 0; i < m; i++){
		for (int j = 0; j < n; j++){
            arr1[i][j] = arr[j][i];
		}
	}
	for (int i = 0; i < m; i++){
		for (int j = 0; j < n; j++){
            printf("%d ",arr1[i][j]);
		}
        printf("\n");
	}
	return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 336KB, 提交时间: 2021-07-24

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

上一题