顺时针打印数组
输入n,m表示n行m列,再输入数组元素,最后顺时针打印出来。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int a[80][80];
int main()
{
int n, m;
cin >> n >> m;
for (int i = 0; i < n;i++)
for (int j = 0; j < m; j++)
cin >> a[i][j];
vector<int> v;
int top = 0, left = 0, right = m - 1, bottom = n - 1;
while (top <= bottom && left <= right)
{
for (int i = left; i <= right; i++)
v.push_back(a[top][i]);
for (int i = top+1; i <= bottom; i++)
v.push_back(a[i][right]);
for (int i = right-1; i >= left && top < bottom; i--)
v.push_back(a[bottom][i]);
for (int i = bottom-1; i > top && left < right; i--) //注i不能等于top
v.push_back(a[i][left]);
top++;
left++;
right--;
bottom--;
}
for (int i = 0; i < v.size(); i++)
cout << v[i] << " ";
return 0;
}
浙公网安备 33010602011771号