笔试题目:顺时针打印矩阵
2013-10-13 10:28
155 查看
笔试的一道题目,笔试的时候还是差一点,但是大体思路是正确的:
1.根据输入的行与列确定该矩阵由多少个矩形组成矩形层数level=( n>m? n:m)/2得出。
2.每一层矩形,按顺时针方向设置组成矩形的值
3.打印
重点:1.动态定义数组
[/code]
2.当前层数包含的值的范围以及矩形四条边包含的值的范围的划分。
1.根据输入的行与列确定该矩阵由多少个矩形组成矩形层数level=( n>m? n:m)/2得出。
2.每一层矩形,按顺时针方向设置组成矩形的值
3.打印
重点:1.动态定义数组
//开辟内存空间动态建立二维数组。 matrix=(int **)calloc(n,sizeof(int *)); for(i=0;i<n;i++) { matrix[i]=(int *)calloc(m,sizeof(int)); }
[/code]
2.当前层数包含的值的范围以及矩形四条边包含的值的范围的划分。
rectLength=(m-i*2); rectWidth=(n-i*2); right=rectLength+rectWidth-1; bottom=rectLength+rectWidth-1+rectLength-2; left=(rectLength+rectWidth-2)*2;
#include<stdlib.h>
void show(int m,int n) //m =chang n=kuang
{
int **matrix;
int i,j;//i为当前层,j为当前矩形的当前位置
int rectLength,rectWidth;//矩形的长和宽
int level;
int sum=0;
int topL,rightL,bottomL,leftL,right,bottom,left;
if(!n || !m)
return ;
//开辟内存空间动态建立二维数组。 matrix=(int **)calloc(n,sizeof(int *)); for(i=0;i<n;i++) { matrix[i]=(int *)calloc(m,sizeof(int)); }
level=n>m ?n:m;
level=level/2; //矩形层数
sum=1;
for(i=0;i<=level;i++) //修改每一层矩形的内容
{
rectLength=(m-i*2); rectWidth=(n-i*2); right=rectLength+rectWidth-1; bottom=rectLength+rectWidth-1+rectLength-2; left=(rectLength+rectWidth-2)*2;
for(j=1;j<= left;j++) //
{
if(j<=rectLength) //上边
{
matrix[i][j-1+i]=sum++;
continue;
}
else if(j > rectLength && j<=right) //右边
{
matrix[j-rectLength+i][m-i-1]=sum++;
continue;
}
else if( j >right && j<= bottom) //下边
{
matrix[n-i-1][bottom-j+1+i]=sum++;
continue;
}
else if( j > bottom && j<= left ) //左边
{
matrix[left-j+1+i][i] =sum++;
continue;
}
if(sum > n*m -1)
break;
}
}
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<m;j++)
printf("%4d",matrix[i][j]);
}
printf("\n");
}
void main()
{
int i,j;
printf("please input length and width ");
scanf("%d %d",&i,&j);
show(i,j);
}
相关文章推荐
- 题目1391:顺时针打印矩阵
- 【剑指offer】题目20 顺时针打印矩阵
- 【笔试】37、顺时针打印矩阵
- 算法题目--顺时针打印矩阵
- 【Java笔试题】顺时针打印矩阵
- 题目1391:顺时针打印矩阵
- 笔试算法题(26):顺时针打印矩阵 & 求数组中数对差的最大值
- 题目1391:顺时针打印矩阵
- 题目8:顺时针打印矩阵
- 题目1391:顺时针打印矩阵-九度
- 九度 题目1391:顺时针打印矩阵
- 九度OJ-题目1391:顺时针打印矩阵
- 【剑指Offer面试编程题】题目1391:顺时针打印矩阵--九度OJ
- 算法题目---顺时针打印矩阵
- 【剑指Offer面试编程题】题目1391:顺时针打印矩阵--九度OJ
- 【转】【算法题目】顺时针打印矩阵
- [Jobdu] 题目1391:顺时针打印矩阵
- 剑指Offer——顺时针打印矩阵
- 剑指offer(21):顺时针打印矩阵
- 面试题20:顺时针打印矩阵