顺时针打印数组

输入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;
}

  

 

posted @ 2018-08-08 08:27  道微真理  阅读(119)  评论(0)    收藏  举报