“之”字形打印矩阵~


编程如下:

欢迎大家前来讨论~

public class PrintMatirx {
public static void main(String args[]) {
int arr[][] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
printZigMatrix(arr);
}


public static void printZigMatrix(int arr[][]) {
int row1 = 0;
int col1 = 0;
int row2 = 0;
int col2 = 0;
int helpR = arr.length - 1;
int helpC = arr[0].length - 1;
boolean dir = false;
/* 下面是来判断(row1,col1)点是往右方移动还是往下边移动,当col1 == helpC时,就要往下面移动了,下面同理 */
while (row1 <= helpR) {// 什么时候停止对角线遍历呢?当row > helpR时,说明已经遍历到底部了,就可以停止遍历了
printDiagonal(arr, row1, col1, row2, col2, dir);
if (col1 == helpC) {
row1++;
} else {
col1++;
}
if (row2 == helpR) {
col2++;
} else {
row2++;
}
dir = !dir;// 方向每次都调转一次
}
}


/* 按照对角线方向打印出矩阵的元素,因为是之字形,所以要定义一个标志dir来使其一次往右上方打印,一次往左下方打印 */
public static void printDiagonal(int arr[][], int row1, int col1, int row2, int col2, boolean dir) {
if (dir) {
while (row1 <= row2) {// 打印停止的判断:row1 <= row2的时候,可以继续往下打印,当row1 > row2时,停止打印,下面也是同理
System.out.print(arr[row1++][col1--] + " ");// 怎么做到往对角线打印,可以通过row++同时col--来实现
}
} else {
while (row2 >= row1) {
System.out.print(arr[row2--][col2++] + " ");
}
}
}


}



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值