数据结构题集--数组(二维数组)

不要脸不要命血

不要脸不要命血

2016-02-19 15:54

今天给大家分享的是由图老师小编精心为您推荐的数据结构题集--数组(二维数组),喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!
设计一个矩阵相乘的程序
  假设有  
  
     1  5  7  3            3  9  1  4  1  4
  A= 3  6  3  9         B= 5  6  7  9  0  3
     1  2  8  7            3  2  7  2  5  6
     0  3  1  9            9  7  4  7  8  0
     3  2  5  4
  
  求出A*B的矩阵
  程序构思:
  我们所知的矩阵乘法运算的算式如下:
  
  Cij = Aik X Bkj   的k从1到 n 的和,那么可以用一个3层循环来运算此算式:
  
  C(1,1)=A(1,1)*B(1,1)+A(1,2)*B(2,1)+A(1,3)*B(3,1)+A(1,4)*B(4,1)
        =(1*3)+(5*5)+(7*3)+(3*9)
        =3+25+21+27
        =76
  同理
  C(1,2)=A(1,1)*B(1,2)+A(1,2)*B(2,2)+A(1,3)*B(3,2)+A(1,4)*B(2,2)
        =(1*9)+(5*6)+(7*2)+(3*7)
        =9+30+14+21
        =74
  依此类推,我们可以求得矩阵A与矩阵B的矩阵乘积。
  void main(void)
  {
      int matrixa[5][4]={1,5,7,3,
                         3,6,3,9,
                         1,2,8,7,
                         0,3,1,9,
                         3,2,5,4};
      int matrixb[4][6]={3,9,1,4,1,4,
                         5,6,7,9,0,3,
                         3,2,7,2,5,6,
                         9,7,4,7,8,0};
      int matrixc[5][6];
      int i,j,k;
      for(i=0;i5;i++)
          for(j=0;j6;j++)
          {
              matrixc[i][j]=0;
              for(k=0;k4;k++)
                  matrixc[i][j]+=matrixa[i][k]*matrixb[k][j];
           }
      printf("The matrix A:");
      for(i=0;i5;i++)
      {
          for(k=0;k4;k++)
              printf("%5d",matrixa[i][k]);
          printf("");
      }
      printf("The matrixb:");
      for(k=0;k4;k++)
      {
          for(j=0;j6;j++)
              printf("%5d",matrixb[k][j]);
          printf("");
      }
      printf("Matrix C=Matrix A* Matrix B");
      for(i=0;i5;i++)
      {
          for(j=0;j6;j++)
              printf("%5d",Matrixc[i][j]);
          printf("");
      }
  }
  运行结果:
  The Matrix A:
  1  5  7  3
  3  6  3  9
  1  2  8  7
  0  3  1  9
  3  2  5  4
  
  The Matrix B:
  3  9  1  4  1  4
  5  6  7  9  0  3
  3  2  7  2  5  6
  9  7  4  7  8  0
  
  Matrix C=Matrix A*Matrix B:
     76   74   97   84  60  61
    129  132  102  135  90  48
    100  86   99   87  97  58
     99   83   64   92  77  15
     70   77   68   68  60  48
  
  二维数组行列互换
  程序实例:
      设计一个能将二维数组转换成以列为主的一维数组和以行为主的一维数组。
      默认二维数组数据为:
             9  7  6  6
             3  5  3  3
      Data = 6  6  4  7
             7  5  1  4
             1  2  8  0
  程序构思:
      依题意知道,本程序所运用的数据结构为“二维数组”,上报为进行数组以列为主和以行为主的转换。
  已知该二维数组的大小为 5*4
  以行为主的数组转换公式为:
      Data[i][j]的位置=(i*4)+j
  以列为主的数组的转换公式为:
      Data[i][j]的位置=(j*5)+i
  声明一个大小为20的一维数组,用来存久违转换以列为主后的数据,并声明一个大小为20的一维数组,用来存久违转换后以行为主的数据。
  void main(void)
  {
      int data[5][4]={ 9,7,6,6,
                       3,5,3,5,
                       6,6,4,7,
                       7,5,1,4,
                       1,2,8,0};
      int rawdata[20];
      int coldata[20];
      int i,j;
      printf("The Data of two dimensional array:");
      for(i=0;i5;i++)
      {
          for(j=0;j4;j++)
              printf("%4d",data[i][j]);
          printf("");
      }
      for(i=0;i5;i++)
          for(j=-;j4;j++)
              rowdata[i*4+j]=data[i][j];
      printf("The Row Major Matrix:");
      for(i=0;i20;i++)
          printf("%3d",rowdata[i]);
      printf("");
      for(i=0;i5;i++)
          for(j=0;j4;j++)
              coldata[j*5+i]=data[i][j];
      printf("The Column Major Matrix:");
      for(i=0;i20;i++)
   &nbs
  
展开更多 50%)
分享

猜你喜欢

数据结构题集--数组(二维数组)

编程语言 网络编程
数据结构题集--数组(二维数组)

用函数读出数据表内容放入二维数组

PHP
用函数读出数据表内容放入二维数组

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java 二维数组矩阵乘法的实现方法

编程语言 网络编程
java 二维数组矩阵乘法的实现方法

用递归查找有序二维数组的方法详解

编程语言 网络编程
用递归查找有序二维数组的方法详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

将数据库的内容读到二维数组并按指定列输出

PHP
将数据库的内容读到二维数组并按指定列输出

遍历XML文档返回二维数组(ASP)(更新版)

电脑网络
遍历XML文档返回二维数组(ASP)(更新版)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

More Effective C++:类型转换

More Effective C++:类型转换

有人打电话对我说 这个节咱不过了 - QQ图案分组

有人打电话对我说 这个节咱不过了 - QQ图案分组
下拉加载更多内容 ↓