样例:
eg.1 int a[5][4]={ {1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16},
{17,18,19,20}
};
eg.2 int a[4][4]={ {1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
#include <iostream>
using namespace std;
int main()
{
int n,m; //行,列
cin >> n >> m;
int a[n][m];
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
cin >> a[i][j];
}
}
int num=n*m;
int leftup=0,leftdown=0,rightup=m-1,rightdown=n-1;
int line,row;
while(num>0)
{
line=leftup,row=leftup;
while(row<=rightup) //打印上行 行不变,列增加
{
cout << a[line][row++] << " ";
num--;
}
row--; //回正
line++;
rightup--;
while(line<=rightdown) //打印右列 列不变,行增加
{
cout << a[line++][row] << " ";
num--;
}
line--; //回正
row--;
rightdown--;
while(row>=leftdown) //打印下行 行不变,列减少
{
cout << a[line][row--] << " ";
num--;
}
row++;
line--;
leftdown++;
while(line>leftup) //打印左列 列不变,行减小
{
cout <<a[line--][row] << " ";
num--;
}
leftup++;
}
return 0;
}