阿里巴巴笔试中的 两道编程题

时间:2024-09-19 23:38:40 综合指导

阿里巴巴笔试中的 两道编程题

  两道编程题:

阿里巴巴笔试中的 两道编程题

  1请用最少的额外空间将一个M*N的矩阵旋转90度,写出算法描述和类c语言程序;

  2完成如下函数,给定分子和分母,输出其小数表示形式,循环节用[]表示,例如给出分子:13,分母19,输出为:0.[13]

  参考解答:

  只需要一个空间即可(下标变量i),考虑的是顺时针旋转

  #include "iostream.h"

  const int M=5;

  const int N=3;

  void main()

  {

  int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

  int c[N][M]={0};

  int i;//只需一个空间i。

  for(i=0;i

  c[i%N][M-1-i/N]=a[i/N][i%N];//就这句话

  for(i=0;i

  {

  if(i%N == 0)

  cout<

  cout<

  }

  cout<

  for(i=0;i

  {

  if(i%M == 0)

  cout<

  cout<

  }

  cout<

  }

  最省空间的矩阵转置

  #include "stdafx.h"

  #include

  using namespace std;   int main()

  {

  const int M = 5;

  const int N = 3;

  int a[M][N] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

  int* p = a[0];

  //转90度后的矩阵设为b[N][M],则 b[j] = *(p + i + j*N)

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

  {

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

  {

  cout<< *(p + i + j*N) <<",";

  }

  cout<

  }

  system("pause");

  return 0;

  }

  这是一个Matrix Transposition In place(M!=N) 问题。1972年 MIT的一个教授给出了到目前为止的最佳解法。不过好像没有楼上这些人说的那么简单,其中还包含了一个定理。大家可以去搜论文,嘿嘿.

  Key word:Matrix Transposition In place

  transposition, matrix operations, permutation,primitive roots, number theory


【阿里巴巴笔试中的 两道编程题】相关文章:

阿里巴巴笔试题201502-19

阿里巴巴校招笔试题11-29

阿里巴巴校招笔试题目11-29

阿里巴巴南京数据分析笔试题11-21

阿里巴巴校招笔试题,试题分享02-25

2015阿里巴巴运营专员岗位笔试题11-13

平安笔试群殴题11-19

联想笔试真题09-26

求问kp经典verbal里的两道笔试题,求赐教!11-21