“之”字形打印矩阵

【题目】
给定一个矩阵martix,按照"之"字形的方式打印矩阵,如下

1234
5678
9101112

之字形打印结果为:1,2,5,9,6,3,4,7,10,11,8,12

|1 |2| 3 |4|--|-|--|--||5  |6| 7 |89 |10| 11|12

#include <cstdio>
void printlevel(int martix[][4],int row1,int col1,int row2,int col2 ,bool fromup)//打印每个斜对角线
{
	if (fromup == 0)
	{
		while (row1 <= row2)
		{
			printf("%d ", martix[row1++][col1--]);
		}
	}
	else
	{
		while (row2>=row1)
		{
			printf("%d ", martix[row2--][col2++]);
		}
	}
}
void print(int martix[][4],int n,int m)//每次斜对角线打印完后判断打印方向以及边界
{
	int row1, col1, row2, col2;
	row1 = col1 = row2 = col2 = 0;
	int endr = n - 1, endc = m - 1;
	bool fromup = false;
	while (row1!=endr+1)
	{
		printlevel(martix, row1, col1, row2, col2, fromup);
		row1 = col1 == endc ? row1 + 1 : row1;
		col1 = col1 == endc ? col1 : col1 + 1;
		col2 = row2 == endr ? col2 + 1 : col2;
		row2 = row2 == endr ? row2 : row2 + 1;
		fromup = !fromup;
	}
	printf("\n");
}
int main()
{
	int martix[3][4];
	int count = 1;
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			martix[i][j] = count++;
		}
	}
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", martix[i][j]);
		}
		printf("\n");
	}
	print(martix, 3, 4);
	return 0;
}

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VictorierJwr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值