阿里巴巴笔试中的 两道编程题
两道编程题:
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
-
职场:谁在跃跃欲跳槽
每年3月和10月是跳槽流动的高峰期,也是带动才市的旺季,素有“金三银十”的说法。今年的“跳槽黄金3月”有什么新的动态,跳槽者又需要注意什么,记者日前采访了一些专家。一年之计在于春综观春节后的广州才市,出现了预料当中的火爆景象,近百场的招聘会轮番上演,数以万计...
-
办公室员工工作守则
办公室员工工作守则有哪些?下面办公室工作人员行为规范,为大家提供参考。一、政治坚定,顾全大局。认真贯彻党和国家的路线、方针、政策,注重政治学习和党性锻炼,主动参与政务、管理事务、搞好服务,维护和推进学院的改革和发展。二、爱岗敬业,积极进取。热爱本职工作,...
-
研究生求职面试经验
一位自称今年将毕业的女研究生在网络上引起热议,家世平淡的她发文畅谈自己是如何过五关斩六将,雷倒面试官,勇夺14个offer的,在严峻的就业大形势下,这位烟酒僧面霸的面试经是否真有可取之处?专家指出,十四次面试成功绝非偶然,不管这消息是真是假,这位面霸mm公布的面试心...
-
重庆换工作后养老保险怎么办
养老保险,全称社会基本养老保险,是国家和社会根据一定的法律和法规,为解决劳动者在达到国家规定的解除劳动义务的劳动年龄界限以下是小编为大家整理的重庆换工作后养老保险怎么办相关内容,仅供参考,希望能够帮助大家!重庆换工作后养老保险怎么办第一步转出在转出地社...