顺时针打印矩阵

这两天看见夏宇和与袁明明学长关于顺时针打印矩阵的算法,不忍也自己写了一个。

很简单的循环和递归,相比学长的算法逊色不少,请多多指教。

题目:

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

例如:如果输入如下矩阵:

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

鄙人的垃圾代码:

#include<iostream>

using namespace std;

#define M 100

#define N 100

int a

-[N];

 

int loop(int s,int t,int m,int n)

{

     int i=s,j=t;

     if(m<1&&n<1) return 0;

     if(m>0) for(i=s;i<s+m;i++) cout<<a[j][i]<<'/t';

     else return 0;

     if(n>0) for(j=t+1;j<t+n;j++) cout<<a[j][i-1]<<'/t';

     else return 0;

     if(i-2<s) return 0;

     else for(i=i-2;i>=s;i--) cout<<a[j-1][i]<<'/t';

     if(j-2<t) return 0;

      else for(j=j-2;j>t;j--) cout<<a[j][i+1]<<'/t';

      loop(s+1,t+1,m-2,n-2);

}

   int main()

{    int m,n,i,j;

    cout<<"输入矩阵行列(最大100×100):"<<endl;

    cin>>m>>n;

     for(i=0;i<n;i++)

    for(j=0;j<m;j++)

    cin>>a[i][j];//输入矩阵

    loop(0,0,m,n);

    system("pause");

    return 0;

    }

原文地址:https://www.cnblogs.com/ituff/p/2858555.html