顺时针打印二维数组——算法笔记

样例:
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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值