首页 > 试题广场 >

蛇形矩阵

[编程题]蛇形矩阵
  • 热度指数:6316 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给你一个整数n,输出n∗n的蛇形矩阵。

输入描述:
输入一行,包含一个整数n


输出描述:
输出n行,每行包含n个正整数,通过空格分隔。

1<=n<=1000
示例1

输入

4

输出

1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[][] nums = new int[n][n];
        int count = 0; //矩阵数字
        int i = 0, j = 0;//i代表行,j代表列
        for (int k = 0; k < n - 1; k++) {   //循环次数n-1次
            int b = j;
            for (i = 0; j < b + 2; j++) {   //一次循环内的横向走向
                if (j < n)
                    nums[i][j] = ++count;
            }
            for (i = 1, j = j - 2; j >= 0; i++, j--) {   //右上到左下走向
                if (i >= 0 && j >= 0 && j < n && i < n)
                    nums[i][j] = ++count;
            }
            for (j = 0; i > 0; i--, j++) {     //左下到右上走向
                if (i >= 0 && j >= 0 && j < n && i < n)
                    nums[i][j] = ++count;
            }
        }
        for (int k = 0; k < n; k++) {
            for (int l = 0; l < n; l++) {
                System.out.print(nums[k][l] + " ");
            }
            System.out.println();
        }
    }
}

发表于 2024-09-07 19:08:35 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int[][] a=new int[n][n];
        int z=0,i=0,j=0;
        while(z<n*n){
            for(j=0;i>=0;i--,j++)
                if(i<n && j<n)
                    a[i][j]=++z;
            for(i=0;j>=0;i++,j--)
                if(i<n && j<n)
                    a[i][j]=++z;
        }
        for(int[] k:a) {
            for (int p : k)
                System.out.print(p + " ");
            System.out.println();
        }
   比较简单
发表于 2022-07-27 17:27:56 回复(2)