矩阵顺时针打印(C++)(? 为什么不能AC,9度1391)
#include <iostream> #include <fstream> using namespace std; int a[1000][1000]; void printM(int m,int n) { for(int startX=0,startY=0,endX=m,endY=n;startX*2 < m && startY*2 < n;startX++,startY++,endX--,endY--) { int i=startX; int j=startY; int p=endX; int q=endY; while(j<endY) printf("%d ",a[startX][j++]); i++; j--; while(i<endX) printf("%d ",a[i++][j]); i--; j--; while(j>=startY) printf("%d ",a[i][j--]); i--; j++; while(i>startX) printf("%d ",a[i--][j]); } cout<<endl; } int main() { freopen("1391.in","r",stdin); int m,n; while(cin>>m>>n) { int i,j; for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); printM(m,n); } return 0; }
测试数据:
5 5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
2 2
1 2
3 4
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
2 5
1 2 3 4 5
6 7 8 9 10
欢迎关注我的个人博客网站:www.ihunter.me