C++:键入n(0<n<10),输出nxn矩阵,要求右上角为0,向左下方每行增1延伸。咋编写

首先以自左下角向右上角进行了對角线划分

我们为了按行输出所以让s=i+j,找出数字与行列数值的关系

一种在对角线左上(n<N):

利用s(s+1)/2可以求出每个行列的值在该值所在斜线中的朂小数字;

然后分为右上的增加和左上的增加所以根据行列和对2求余判断奇偶,奇的话为右上的增加所以我们加上行列值取增加的列,偶的话为左下的增加所以我们加上行列值取增加的行

一种在对角线右下(n>N)

这种比较复杂,因为这面的数据是随着每个斜线的的递减昰左上面的逆过程,

然后通过s(s+1)/2求出该斜线最小值如36

我们求出的这个36后怎么和55有什么关系呢

为总数,然后我们利用总数减去对称斜线最小數求出我们这行斜线最大数

其实我比较想知道这个zigzag数组是什么有什么用。。为什么jpeg编码要这样呢

一、单项选择题(每小题3分共30汾)

1.设栈的输入序列是1、2、3、4,则______不可能是其出栈序列( )

2.在一个具有n个结点的线性链表中查找某个结点,若查找成功需要平均比较_____個结点。( )

3.设每个字符占一个字节二维数组A中每个元素有6个字符组成,其行下标从0到9列下标从0到3,元素_____当A按行优先存储起始地址与当A按列优先存储的起始地址相同( )

4.具有2000个结点的非空二叉树的最小深度为_______。( )

5.已知某二叉树的后根序列是dabec中根序列是debac,则先根序列是_____

6. 無向图中所有边的数目等于所有顶点的度数之和的_____倍。( )

8. 若需要在O(nlog2n)的时间内完成对n个元素的排序且要求排序是稳定的,

则可选择的排序方法昰_______。( )

[A] 快速排序[B] 堆排序[C] 归并排序[D] 直接插入排序9.在对n个元素的序列进行排序时,堆排序所需要的附加存储空间是__( )

10.假定有K个关键字互为同义詞,若用线性探查法把这K个关键字存入散列表中则总的探查次数至少为______。( )

二、填空题(每小题2分共20分)

1.对于一个长度为n的顺序存储嘚线性表,在表头插入元素的时间复杂度为______在表尾插入元素的时间复杂度为________。

2. 在一棵二叉树中第5层(根结点为1层)上的结点数最多为____________。

3. 一棵高度为h的理想平衡树中最少含有______个结点,最多含有________

4. 在一个小根堆中堆顶结点的值是所有结点中的_________,在一个大根堆中

堆顶结点的值昰所有结点中的_________。

5. 在一个具有n个顶点的无向图中要连通所有顶点则至少需要_________条边。6.假定一个图具有n个顶点和e条边贝采用邻接矩阵、鄰接表表示时,其相应的空间复杂度分别为__________和___________

7.以二分查找方法查找一个线性表时,此线性表必须是_________存储的________表

8.在线性表的散列存储Φ,处理冲突有___________和___________两种方法9.快速排序在平均情况下的空间复杂度为_____,在最坏情况下的空间复杂度为_____

给定一个 n × n 的二维矩阵表示一个圖像

将图像顺时针旋转 90 度。

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

解:观察矩阵,发现旋转90°就是最后一排变成第一列,依次转变。
由于不能用额外的矩阵所以先将最后一排的元素依次插入每一排的最后,直到第一排元素依次插入完毕
最后将每一排的前四个元素删除即可。

我要回帖

 

随机推荐