按照顺时针的顺序从外向里打印整形数组
2017-03-12 11:43
204 查看
做这道题时要有清晰的思路,分4个方向打印,每次从左上角(0,0),(1,1)....开始,最后一次为行或列中小的一个的1/2,如果行和列不相等
最后都会剩下一行或者一列,只剩一行时只需再打印第一步,剩一列时需要打印1 ,2步
#include <stdio.h>
void outPrint( int arr[3][5], int clo, int row)
{
if ( NULL == arr || clo <= 0 || row <= 0)
return ;
int end = 0;
if (clo<row)
end = (clo+1)/2;
else
end = (row+1)/2;
for (int start = 0; start <end ; start++)
{
int i = 0;
for (i = start; i < row; i++) //从左到右打印
printf("%d ",arr[start][i]);
if (start < clo -1)
{
for (i= start + 1; i < clo; i++) //从上到下打印
printf("%d ",arr[i][row-1]);
}
if (start < row - 1 && start < clo -1)
{
for (i=row-2; i >= start; i --) //从右到左打印
printf("%d ",arr[clo-1][i]);
}
if (start < row - 1 && start < clo -1)
{
for (i=clo-2 ;i > start; i--) //从下到上打印
printf("%d ",arr[i][start]);
}
clo -- ;
row -- ;
}
}
int main()
{
int arr[3][5] = {
{7,8,9,4,5},
{10,11,1,2,5},
{13,14,1,5,6}
};
outPrint(arr,3,5);
return 0;
}
最后都会剩下一行或者一列,只剩一行时只需再打印第一步,剩一列时需要打印1 ,2步
#include <stdio.h>
void outPrint( int arr[3][5], int clo, int row)
{
if ( NULL == arr || clo <= 0 || row <= 0)
return ;
int end = 0;
if (clo<row)
end = (clo+1)/2;
else
end = (row+1)/2;
for (int start = 0; start <end ; start++)
{
int i = 0;
for (i = start; i < row; i++) //从左到右打印
printf("%d ",arr[start][i]);
if (start < clo -1)
{
for (i= start + 1; i < clo; i++) //从上到下打印
printf("%d ",arr[i][row-1]);
}
if (start < row - 1 && start < clo -1)
{
for (i=row-2; i >= start; i --) //从右到左打印
printf("%d ",arr[clo-1][i]);
}
if (start < row - 1 && start < clo -1)
{
for (i=clo-2 ;i > start; i--) //从下到上打印
printf("%d ",arr[i][start]);
}
clo -- ;
row -- ;
}
}
int main()
{
int arr[3][5] = {
{7,8,9,4,5},
{10,11,1,2,5},
{13,14,1,5,6}
};
outPrint(arr,3,5);
return 0;
}
相关文章推荐
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- 剑指offer_输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
- [算法-java] 将一个矩阵按照从外向里以顺时针的顺序打印出每一元素
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
- java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
- [python] 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字[顺时针打印矩阵]
- 输入一个矩阵,按照从外向里顺时针的顺序依次打印出每一个数字
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
- java 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,
- C++输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- 剑指offer面试题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
- 输入一个矩阵,按照从外向里以顺时针的顺序依次扫印出每一个数字
- 每天一道LeetCode-----将m × n矩阵按照顺时针螺旋顺序转化成一维数组
- 输入一个矩阵,按照从外到里以顺时针的顺序依次打印每一个数字
- 从外向里以顺时针的顺序依次打印出矩阵的每一个数字
- 输入一颗二元树,从上往下按层打印树的每个节点,同一层按照从左往右的顺序打印。