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

2016-02-19 15:54 4 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的数据结构题集--数组(二维数组),喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

设计一个矩阵相乘的程序
  假设有  
  
     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
  

来源:http://www.tulaoshi.com/n/20160219/1610668.html

延伸阅读
标签: ASP
  数组数据排序的程序例子 <% ''*** build example array to show that this thing can sort ''*** alpha-numeric arrays Dim MyArray MyArray = Array(1,5,"shawn","says","hello"2m骺噃嶤123,12,98) MyArray = Sort(MyArray) For I = 0 to Ubound(MyArray) Response.Write MyArray(I) &a...
标签: Web开发
JavaScript提供脚本语言的编程与C++非常相似,它只是去掉了C语言中有关指针等容易产生的错误,并提供了功能强大的类库。对于已经具备C++或C语言的人来说,学习JavaScript脚本语言是一件非常轻松愉快的事。 一、JavaScript代码的加入 JavaScript的脚本包括在HTML中,它成为HTML文档的一部分。与HTML标识相结合,构成了一个功...
标签: Delphi
  方法:       var          A:array of Integer;       begin            ShowMessage(IntToStr(High(A))); //<- 值为1          ...
数组下标 JScript 中的数组是稀疏的。也就是说,假如一个数组具有三个元素,编号分别为 0、1 和 2,您就可以创建元素 50,而不必担心从 3 到 49 的参数。假如该数组有一个自动的 length 变量,(请参阅 内部对象 了解有关数组长度的自动监控的说明),该 length 变量被设为 51,而不是 4。当然您可以创建各元素的编号之间没有间隙的数组,不...
才刚开了个头,就要说再见了——在树这里,除了二叉树,别的都还没有讲。为什么可以总结了呢?因为前面已经涉及到了树的两个基本用途,而假如再讲B+、B-,就不能不提到搜索,假如是胜者树就不能不提到排序。为此,把这部分放到后面。 !-- frame contents -- !-- /frame contents -- 我前面所做的努力,只是让你有个基本概念,什么...

经验教程

903

收藏

54
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部