您的位置:首页 > 其它

顺时针打印矩阵

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

很简单的循环和递归,相比学长的算法逊色不少,请多多指教。
题目:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
例如:如果输入如下矩阵:
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
-
;

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: