精华内容
下载资源
问答
  • 作者:MaskRay链接:https://www.zhihu.com/question/36628908/answer/68364663来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。const int N = 10000;int M;#define REP(i, n) FOR...

    作者:MaskRay

    链接:https://www.zhihu.com/question/36628908/answer/68364663

    来源:知乎

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    const int N = 10000;

    int M;

    #define REP(i, n) FOR(i, 0, n)

    #define FOR(i, a, b) for (int i = (a); i < (b); i++)

    void transpose(int a[][N], int b[][N])

    {

    REP(i, N)

    REP(j, N)

    b[j][i] = a[i][j];

    }

    void recursive_transpose(int a[][N], int b[][N], int i0, int j0, int i1, int j1)

    {

    int r = i1-i0, c = j1-j0;

    if (r > M) {

    recursive_transpose(a, b, i0, j0, i0+r/2, j1);

    recursive_transpose(a, b, i0+r/2, j0, i1, j1);

    } else if (c > M) {

    recursive_transpose(a, b, i0, j0, i1, j0+c/2);

    recursive_transpose(a, b, i0, j0+c/2, i1, j1);

    } else

    FOR(i, i0, i1)

    FOR(j, j0, j1)

    b[j][i] = a[i][j];

    }

    void loop_tiling_transpose(int a[][N], int b[][N])

    {

    for (int i = 0; i < N; i += M)

    for (int j = 0; j < N; j += M)

    for (int i1 = min(i+M, N), ii = i; ii < i1; ii++)

    for (int j1 = min(j+M, N), jj = j; jj < j1; jj++)

    b[j][i] = a[i][j];

    }

    int A[N][N], B[N][N];

    int main()

    {

    REP(i, N)

    REP(j, N)

    A[i][j] = rand();

    transpose(A, B); // cache

    clock_t bgn = clock();

    transpose(A, B);

    printf("simple, time: %lf\n", double(clock()-bgn)/CLOCKS_PER_SEC);

    int ticks[] = {200,300,400,500,600,700,800,900,0};

    for (int i = 0; ticks[i]; i++) {

    M = ticks[i];

    bgn = clock();

    recursive_transpose(A, B, 0, 0, N, N);

    printf("recursive, M = %d, time: %lf\n", M, double(clock()-bgn)/CLOCKS_PER_SEC);

    bgn = clock();

    loop_tiling_transpose(A, B);

    printf("loop tiling, M = %d, time: %lf\n", M, double(clock()-bgn)/CLOCKS_PER_SEC);

    }

    }

    展开全文
  • 方法 :使用常规的思路def transpose(M):初始化转置后的矩阵result = []获取转置前的行和列row, col = shape(M)先对列进行循环for i in range(col):# 外层循环的容器item = []# 在列循环的内部进行行的循环for ...

    方法一 :使用常规的思路

    def transpose(M):

    初始化转置后的矩阵

    result = []

    获取转置前的行和列

    row, col = shape(M)

    先对列进行循环

    for i in range(col):

    # 外层循环的容器

    item = []

    # 在列循环的内部进行行的循环

    for index in range(row):

    item.append(M[index][i])

    result.append(item)

    return result 思路:矩阵的转置就是从行变成列,列变成行。

    先定义一个最终存放矩阵的容器;

    先对列进行循环i,并定义一个临时数组用于存放数据,在每次列的循环内部,再次对行进行循环j,取第M[j][i]个元素存入一个临时数组中;

    在每次列循环完毕,将临时数组存入最终数组中;

    当列循环完毕, 最终数组就是矩阵的转置。

    方法二:使用zip解压包

    def transpose(M):

    直接使用zip解压包成转置后的元组迭代器,再强转成list存入最终的list中

    return [list(row) for row in zip(*M)] 思路:

    zip解压包后,返回一个将多个可迭代对象组合成一个元组序列的迭代器,正如:

    my_zip = list(zip(['a', 'b', 'c'], [1, 2, 3]))

    print(my_zip) # [('a', 1), ('b', 2), ('c', 3)]

    在每次循环中将元组强转成list并存入总list中。

    python学习网,免费的在线学习python平台,欢迎关注!

    展开全文
  • System.out.println("矩阵转置前为 :"); for(int i=0;i;i++) { for(int j=0;j;j++) { b[j][i]=a[i][j]; System.out.print(a[i][j]+" "); } System.out.println(); } System.out.println("矩阵转置后为 :"); for(int...

    每日壹句:茶凉了,人走了,月亮还在!

    具体代码如下:

    package example1;
    
    public class Example{
       public static void main(String args[])
       {
        int a[][]={{2,4,6,8},{3,5,3,7},{6,5,9,8}};
        int b[][]=new int[4][3];
        System.out.println("矩阵转置前为 :");
        for(int i=0;i<3;i++)
        {
           for(int j=0;j<4;j++)
           {
             b[j][i]=a[i][j];
             System.out.print(a[i][j]+" ");
           }
           System.out.println();
        }
        System.out.println("矩阵转置后为 :");
        for(int i=0;i<4;i++)
        {
           for(int j=0;j<3;j++)
           {
             System.out.print(b[i][j]+" ");
           }
           System.out.println();
       }
       }
    }

    运行结果如图:

     

     

    展开全文
  • 输入 1 2 3 4 5 6 7 8 9 1 2 3 6 4 5 6 7 7 8 9 8 1 3 5 6 3x3矩阵转置 package com; import java.util.*; class trans{ int temp; int [] []transpose(int[][] array) { for(int i=0;i;i++) for(int j=i+1;j 4x4...

     

     

     输入

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

     3x3矩阵转置

    package com;
    import java.util.*;
    class trans{
        int temp;
        int [] []transpose(int[][] array)
        {
            for(int i=0;i< array.length;i++)
                for(int j=i+1;j<array[i].length;j++)
                {
                    temp=array[i][j];
                    array[i][j]=array[j][i];
                    array[j][i]=temp;
                }
            return array;
        }
    
    
    }
    public class sentence {
        public static void main(String[] args) {
            int [][]a=new int[3][3];
            int [][]b=new int[3][3];
            Scanner reader=new Scanner(System.in);
            System.out.println("请输入要转置3x3的矩阵");
            for(int i=0;i<3;i++)
                for(int j=0;j<3;j++)
                    a[i][j]= reader.nextInt();
            trans pose=new trans();
            b=pose.transpose(a);
            System.out.println("转置后的矩阵");
            for(int i=0;i<b.length;i++)
            {
                for(int j=0;j<b[i].length;j++)
                    System.out.print(b[i][j]+" ");
                System.out.println();
            }
        }
    }

    4x4矩阵转置

    package com;
    import java.util.*;
    class trans{
        int temp;
        int [] []transpose(int[][] array)
        {
            for(int i=0;i< array.length;i++)
                for(int j=i+1;j<array[i].length;j++)
                {
                    temp=array[i][j];
                    array[i][j]=array[j][i];
                    array[j][i]=temp;
                }
            return array;
        }
    
    
    }
    public class sentence {
        public static void main(String[] args) {
            int [][]a=new int[4][4];
            int [][]b=new int[4][4];
            Scanner reader=new Scanner(System.in);
            System.out.println("请输入要转置4x4的矩阵");
            for(int i=0;i<a.length;i++)
                for(int j=0;j<a.length;j++)
                    a[i][j]= reader.nextInt();
            trans pose=new trans();
            b=pose.transpose(a);
            System.out.println("转置后的矩阵");
            for(int i=0;i<b.length;i++)
            {
                for(int j=0;j<b[i].length;j++)
                    System.out.print(b[i][j]+" ");
                System.out.println();
            }
        }
    }

    展开全文
  • c语言...,写一个函数,将一个3*3的矩阵转置 我写了一个,不知道错在那2019-6-8来自ip:11.120.132.182的网友咨询浏览量:298手机版问题补充:写一个函数,将一个3乘3的整数矩阵转置。用指针方法处理。c语言...,写一个...
  • python 矩阵转置

    千次阅读 2021-01-13 15:55:27
    5.矩阵转置 给定:L=[[1,2,3],[4,5,6]] 用zip函数和列表推导式实现行列转def transpose(L): T = [list(tpl) for tpl in zip(*L)] return Tpython 字符串如何变成矩阵进行矩阵转置如输入串“...
  • 矩阵转置怎么 详情介绍

    千次阅读 2020-12-19 13:24:31
    设A为m×n阶矩阵(即m行n列),第i...操作方法01基本性质1:(KA)'=KA'即任何一个常数乘以矩阵转置等于这个常数乘以这个矩阵转置02基本性质2:(A')'=A即一个矩阵转置矩阵转置等于它本身03基本性质:3:(A±B)'=A...
  • 写一函数,将一个3x3的整型矩阵转置 解题思路: 矩阵转置就是行变列,列变行,说白了就是 arry[i][j] 转换为 arry[j][i] ; 但是需要注意的是, 一. 因为行列个数可能并非相同,转换后行数或者列数变多了或者变少,...
  • 求一个n阶矩阵转置矩阵

    千次阅读 2021-11-27 16:27:51
    用c语言进行矩阵转置
  • 满意答案gbwag2015.10.14采纳率:42%等级:9已帮助:667人我的代码逻辑是:矩阵行指针初值指向每行首地址,迭代依次取所有行指针指向值组成新行,所有行指针自增。最终组合新的矩阵。#include#includeint**getList...
  • C语言实现矩阵转置

    2021-05-23 12:38:46
    讲解对象:C语言实现矩阵转置作者:融水公子 rsgz1随机函数生成矩阵#include#include#includeint main(){int i,j;int a[5][3];printf("生成矩阵:\n");//srand(time(NULL));for(i=0;i<5;i++){for(j=0;j<3;j++){...
  • 用C语言实现矩阵转置

    2021-05-21 12:18:11
    2016-02-02 回答(c语言)稀疏矩阵的快速转置算法 /*矩阵的快速转置*/#include #include #include #define maxsize 200 /*矩阵中最大非零元的个数*/typedef struct triple{int i; /*行标,本程序中从1开始的*/int j; /*...
  • #include<stdio.h>int main(){int a[3][3];int*i;for(i=*a;...//输入矩阵void trans(int(*p)[3]);//声明转换函数trans(a);}void trans(int(*p)[3]){int i,j,t,*k;for(i=0;i<3;i++)for(j=0;j&...
  • Maple: 矩阵转置

    2021-11-18 10:37:59
    在Maple中用%T的命令执行矩阵转置,具体效果如下
  • 匿名用户1级2008-02-22 回答#define MAXINT 1000000001L#includevoid main(){long *m;int *s;int mtrx[6][2]={{30,35},{35,15},{15,5},{5,10},{10,20},{20,25}};int i,j,no;m=malloc(36*sizeof(long));...
  • 一个3x4阶矩阵转置

    千次阅读 2021-04-13 14:50:31
    矩阵转置就是将一个矩阵的行、列互换 package qq; public class qq { public static void main(String[] args) { int a[][]= {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int b[][]= new int[4][3]; int ...
  • 本关任务: 指针实现写一个函数,将一个3×3的整数矩阵转置。 相关知识 为了完成本关任务,你需要掌握: 1.矩阵的转置算法; 2.二维数组的定义; 3.二维数组的指针; 4.函数的定义、调用及参数传递。 矩阵的转置...
  • C语言矩阵转置

    2021-05-20 01:54:41
    本实例是利用数组解决线性代数中的矩阵转置...算法思想由数学知识可知,将第一个矩阵的所有元素绕着一条从第一行第一列出发的右下角 45° 的射线做镜面反转,即可得到该矩阵的转置。程序代码#include int main(){in...
  • 这是一个C语言示例:输入一个 n 行 n 列的整数矩阵,输出其转置矩阵(2≤n≤100)。...图 1:矩阵转置示例解决矩阵问题时通常都是先将矩阵元素存放在一个二维数组中,使用双重 for 循环语句来遍历这个...
  • Time Limit: 1000 ms Memory Limit: 65536 KiBProblem Description输入N*N的矩阵,输出它的...接着是一个N*N的矩阵。Output转置矩阵。Sample Input21 21 2Sample Output1 12 2代码:#include#include#includeintn;v...
  • 特殊矩阵通用特殊矩阵zeros函数:产生全0矩阵,即零矩阵。ones函数:产生....1矩阵,即幺矩阵。eye函数:产生对角线为1的矩阵,当矩阵是方正时,得到单位矩阵。rand函数:产生(0,1)区间均匀分布的随机矩阵。randn...
  • 解题思路:注意事项:参考代码:#includeint main(){int n,s[100][100];void transposition(int(*p)[100], int n);scanf("%d", &n);for (int i = 0; i < n; i++){for (int j = 0; j < n;...
  • 分享给大家供大家参考,具体如下:矩阵转置方法 :使用常规的思路 def transpose(M):# 初始化转置后的矩阵result = []# 获取转置前的行和列row, col = shape(M)# 先对列进行循环for i in range(col):# 外层循环的...
  • 算法阅读题解题问题分析第问第二问 问题 阅读下列程序 void f30(int A[],int n) {  int i,j,m;  for(i=1;i<n;i++)  for(j=0;j<i;j++)  { m=A[i*n+j]; // A[i*n+j]与A[j*n+i]值交换   A...
  • Mathematica是世界上最强大的通用计算系统,使用mathematica可以自动求解矩阵转置矩阵,下面将给大家介绍使用mathematica 11求解矩阵转置矩阵的详细操作方法。包括求解2阶矩阵转置矩阵、求解3阶矩阵转置矩阵...
  • 搜索热词本文实例讲述了Python实现矩阵转置的方法。分享给大家供大家参考,具体如下:前几天群里有同学提出了一个问题:手头现在有个列表,列表里面两个元素,比如[1,2],之后不断的添加新的列表,往原来相应位置...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,212
精华内容 26,884
关键字:

一个矩阵的转置怎么求