矩阵相关练习

简介: 矩阵相关练习

目录

矩阵相加

矩阵相乘

矩阵顺时针旋转90°

1.矩阵相加

分析

int main()
{
  int a[3][4] = { {1,2,3,4},{3,4,5,6},{5,6,7,8} };
  int b[3][4] = { {1,2,3},{4,5},{6} };
  int c[3][4] = { 0 };
  int i, j;
  for (i = 0; i < 3; i++)
  {
    for (j = 0; j < 4; j++)
    {
      c[i][j] = a[i][j] + b[i][j];
    }
  }
  for (i = 0; i < 3; i++)
  {
    for (j = 0; j < 4; j++)
    {
      printf("%-4d", c[i][j]);
    }
    printf("\n");
  }
  return 0;
}

矩阵的乘法

分析

int main()
{
  int a[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
  int b[3][2] = { {1,2},{4,5},{7,8} };
  int c[3][2] = { 0 };
  int i, j, k;
  for (i = 0; i < 3; i++)
  {
    for (j = 0; j < 2; j++)
    {
      for (k = 0; k < 3; k++)
      {
        c[i][j] += a[i][k] * b[k][j];
      }
    }
  }
  for (i = 0; i < 3; i++)
  {
    for (j = 0; j < 2; j++)
    {
      printf("%-5d", c[i][j]);
    }
    printf("\n");
  }
  return 0;
}

矩阵实现顺时针旋转90°

. 旋转图像


给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。


你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。


示例 1:




输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]

输出:[[7,4,1],[8,5,2],[9,6,3]]

示例 2:




输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]

输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

示例 3:


输入:matrix = [[1]]

输出:[[1]]

示例 4:


输入:matrix = [[1,2],[3,4]]

输出:[[3,1],[4,2]]

分析

int main()
{
  int arr[10][10] = { 0 };
  int i = 0;
  int j = 0;
  int n;
  scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
      for (j = 0; j < n; j++)
      {
        scanf("%d", &arr[i][j]);
      }
  }
    int b[10][10] = { 0 };
    for (i = 0; i < n; i++)
    {
      for (j = 0; j < n; j++)
      {
         b[i][j] = arr[i][j];
      }
    }
    for(i=0;i<n;i++)
    {
      for (j = 0; j < n; j++)
      {
        arr[j][n - 1 - i]=b[i][j];
      }
    }
    for (i = 0; i < n; i++)
    {
      for (j = 0; j < n; j++)
      {
        printf("%d ", arr[i][j]);
      }
      printf("\n");
    }
  return 0;
}

同理若逆时针旋转思想也是类似的,有兴趣的可以去做做逆时针旋转90°

目录
打赏
0
0
0
0
0
分享
相关文章
Spring 启动过程(上)
Spring 是我们最常用的框架之一,我们今天一起来带大家一些探究一下 Spring 的启动过程。 首先,Spring 的启动过程分为 12 个步骤主要是完成容器的初始化,以及对单实例非懒加载 Bean 完成创建和Bean 属性的赋值注入和初始化,以及消息派发器的创建和启动过程消息的触发。 补充:本文和后续版本基于 spring-5.1.14 版本展开
446 0
VUE3(二十四)自定义alert弹窗组件
这里自定义了几个alert弹窗组件:带有确定取消的alert弹窗组件、自定义alert,在自定义时间消失(仿layer)、自定义loading,在需要让他消失的时候让其消失 。
1275 0
VUE3(二十四)自定义alert弹窗组件
只知道预制体是用来生成物体的?看我如何使用Unity生成UI预制体
本篇就介绍一下,如何使用UI的预制体,实例化预制体,以及在生成预制体的时候给预制体身上的UI属性就行设置。
上古神器WireGuard异地高效率组网
相信很多的工作者、极客玩家或者学生党在项目开发以及发布的时候会遇到云上服务器资源不够(包括内存不够、磁盘不够等等),而我们可能由于一些问题,无法升级云服务器的配置,这样的场景就很尴尬对吧?现在的确有许多的像netapp、以及zerotier这样的内网穿透的存在,但是存在一个问题就是不安全,路由网关并不是在我们自己机器上,而且这些市面的望穿也有高效的方法但是要用money,苦于囊中羞涩,这时候WireGuard就可以很好提供高性能的内网穿透能力。
10775 10
上古神器WireGuard异地高效率组网
【PyTorch基础教程3】梯度下降
在Pytorch基础教程1中我们用的是基于【穷举】的思想,但如果在多维的情况下(即多个参数),会引起维度诅咒现象。 现在我们利用【分治法】,先对整体采样分割,在相对最低点进一步采样。需要求解使loss最小时的参数取值:
142 0
【PyTorch基础教程3】梯度下降
.Net Core实战之基于角色的访问控制的设计(二)
.Net Core实战之基于角色的访问控制的设计(二)
173 0
.Net Core实战之基于角色的访问控制的设计(二)
【图神经网络DGL】消息传递范式
【图神经网络DGL】消息传递范式 消息函数:接受一个参数 edges,这是一个 dgl.EdgeBatch 的实例, 在消息传递时,它被DGL在内部生成以表示一批边。edges有三个成员属性:src、dst和data,分别用于访问源节点、目标节点和边的特征。
603 0
【图神经网络DGL】消息传递范式
设计模式学习——代理模式(1)
一、什么是代理模式 为其他对象提供一种代理以控制对这个对象的访问。其类图如下: Subject:抽象主题类,它既可以是抽象类也可以是接口类,是一个最普通的业务类型定义,无特殊要求。 RealSubject:具体主题类,被代理角色,是具体业务逻辑实现执行者。 Proxy:代理类,负责对具体主题的应用,
169 0
设计模式学习——代理模式(1)
都2020年了,你还不知道count(1)和count(*)谁效率更高吗?
今天公司的一个需求需要统计一个数据库中表的行数有多少,二话不说当然就直接用count()这个聚合函数,以前经常听到一种说法说count(1)的效率比count(*)要高,于是测试了一下count(1)和count(*)的速度差距,发现两者的查询速度很接近,甚至count(*)要更快一些,于是就有了这篇文章。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等