金山网络笔试题-逆时针输出矩阵

原创 2014年04月10日 22:47:06

【题意】一个n*m的矩阵,按逆时针旋转输出。

输入:

1  10  9

2  11  8

3  12  7

4  5    6 

输出:

1  2  3  4  5  6  7  8  9  10  11  12

【思路】

1  10  9

2  11  8

3  12  7

4  5    6 

将矩阵分层,总共可以形成 min(m / 2, n / 2)层。

每层分为左、下、右、上四边,按左下右上顺序循环输出各层。

若min(m , n)为奇数,最后还有一部分不能构成层,需要特别处理。

【代码】

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i, j;
	int n, m;
	printf("please input row and column\n");  //行、列输入
	scanf("%d%d",&n, &m);
	int **matrix = (int **)malloc(n * sizeof(int *));  //二维数组动态分配内存
	for(i = 0; i < n; i++)
		matrix[i] = (int *)malloc(m * sizeof(int));
	printf("please input the matrix n*m:\n");
	for(i = 0; i < n; i++)   //矩阵输入
		for(j =0; j < m; j++)
			scanf("%d", &matrix[i][j]);
	for(i = 0; i < m / 2; i++)
	{
		for(j = i; j < n - i; j++)  //左
			printf("%d ", matrix[j][i]);
		for(j = i + 1; j < m - i - 1; j++)  //下
			printf("%d ", matrix[n - i - 1][j]);
		for(j = n - i - 1; j >= i; j--)  //右
			printf("%d ", matrix[j][m - i - 1]);
		for(j = m - i - 2; j > i; j--)  //上
			printf("%d ", matrix[i][j]);
	}
	if(m <= n && (m % 2 == 1))    //最后不能构成层的数据处理
		for(i = 0; i <= n - m; i++)
			printf("%d ", matrix[m / 2 + i][m / 2]);
	else if(m > n && (n % 2 == 1))
		for(i = 0; i <= m - n; i++)
			printf("%d ", matrix[n / 2][n / 2 + i]);
	printf("\n");
	for(i = 0; i < n; i++)  //释放内存
		free(matrix[i]);
	free(matrix);
}

【结果】



逆时针打印矩阵

金山的笔试题目:给一个矩阵,将矩阵逆时针打印出来
  • yilip
  • yilip
  • 2014年11月27日 13:53
  • 1919

n*n阶矩阵逆时针输出

问题描述:n*n阶矩阵逆时针输出。 即: 输入:5 输出: 01 16 15 14 13 02 17 24 23 12 03 18 25 22 11 04 19 20 21 10 05...
  • z69183787
  • z69183787
  • 2015年08月24日 17:53
  • 1744

金山wps2017校招笔试(前端A卷)

昨天有幸参加金山wps校招笔试(前端岗A卷),虽然题目不多,难度不大,但是还是感觉没有发挥好,所以将相关的题目的贴出来,以备往后学习之用。 1. 以下代码A、B、C处分别输出什么(答案已在注...
  • zhangwx6
  • zhangwx6
  • 2017年04月15日 23:01
  • 1229

2016金山WPS春季实习招聘笔试&面试问题回忆

下面将我在广州参加的2016年春季金山WPS实习招聘的整个过程中遇到的问题记录如下。不全,但是有些题目还是值得思考的。1.笔试题2016.4.11晚上在中山大学东校区(大学城校区)参加了金山WPS的笔...
  • K346K346
  • K346K346
  • 2016年04月17日 18:15
  • 7273

金山的笔试题总结

一、var arr = []; arr['a'] = 1; console.log(arr.length); // 0 arr['2'] = 2; console.log(arr.length); /...
  • shuidinaozhongyan
  • shuidinaozhongyan
  • 2017年09月12日 14:38
  • 270

Java 小例子:按照顺时针或逆时针方向输出一个数字矩阵

题目:按照指定的长宽和输出方向,从外向内打印一个从 1 开始的数字矩阵,矩阵的开始位置在左上角。...
  • YidingHe
  • YidingHe
  • 2015年11月19日 11:00
  • 3117

金山面试题目(c++经典收藏1)

笔试题目(C++) 1. sizeof用法,和strlen的区别 2. 各种数据结构,如堆、栈、队列等的特征和作用 3. 什么是野指针,什么情况下会产生野指针,如何避免? 4.快速排序的时间复...
  • ghevinn
  • ghevinn
  • 2012年08月24日 15:53
  • 1188

笔试题&面试题:输入一个维度,逆时针打印出一个指定的矩阵

题目:用户给定一个维度,打印出指定的一个矩阵,例如用户给定10,输出应该如下图所示: 程序如下: #include #include int main() { int dimension; ...
  • laoniu_c
  • laoniu_c
  • 2014年07月24日 15:41
  • 1262

万恶的金山笔试题

这么难的题也敢出,吓死宝宝了!
  • snow_5288
  • snow_5288
  • 2016年08月06日 18:49
  • 1032

求原始矩阵逆时针旋转90度后的矩阵(CCF)

package com.lck; import java.util.Scanner; public class Main3 { /* 问题1 问题描述   旋转是图像处理的基本操作,在这个...
  • liaction
  • liaction
  • 2015年09月12日 21:25
  • 1991
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:金山网络笔试题-逆时针输出矩阵
举报原因:
原因补充:

(最多只允许输入30个字)