打印蛇形矩阵的java实现

smartOJ[NOIP1995P3]

import java.util.*;

public class Main

{

public static void main(String[] args) {

String str =null;

Scanner scanner = new Scanner(System.in);

int n = scanner.nextInt();

int[][] numbers = new int[n][n];

boolean[][] isE = new boolean[n][n];

int x=0,y=n-1,k=1;

numbers[x][y]=k++;

isE[x][y] = true;

while(k<= n*n){

while(x<n-1 && !isE[x+1][y]){

x++;

numbers[x][y]=k++;

isE[x][y] = true;

}

while(y>0 && !isE[x][y-1]){

y--;

numbers[x][y]=k++;

isE[x][y] = true;

}

while(x>0 && !isE[x-1][y]){

x--;

numbers[x][y]=k++;

isE[x][y] = true;

}

while(y<n-1 && !isE[x][y+1]){

y++;

numbers[x][y]=k++;

isE[x][y] = true;

}

}

//格式输出

if(n<4){

for(int i=0;i<n;i++){

for(int j=0; j<n; j++){

System.out.printf("%d ",numbers[i][j]);

}

System.out.println();

}

} else if(n<10){

for(int i=0;i<n;i++){

for(int j=0; j<n; j++){

System.out.printf("%2d ",numbers[i][j]);

}

System.out.println();

}

} else if(n==10){

for(int i=0;i<n;i++){

for(int j=0; j<n; j++){

System.out.printf("%3d ",numbers[i][j]);

}

System.out.println();

}

}

}

}

时间: 2024-12-05 05:04:06

打印蛇形矩阵的java实现的相关文章

打印蛇形矩阵

问题描述:给定一个整数矩阵,将该整数矩阵顺时针打印出来, 例如矩阵为    1   2   3   4 5   6   7   8 9  10  11 12 13  14  15 16 则顺时针输出为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10 分析:这道题其实没有涉及到复杂的算法和数据结构问题,也没有简单的方法来做,只能画图找出每次循环的边界来控制, 通过画图可以看出圈开始的第一元素可以作为我们的基准元素,确定了这个元素也就好办了.可以得出规律,每次的 基准元

Java编码 蛇形矩阵的构建与遍历输出

一.蛇形矩阵的构建,并按行输出 例: 输入:n, 生成n*n的蛇形矩阵 1 2 3 8 9 4 7 6 5 输出:1 2 3 8 9 4 7 6 5 java编码 public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int n = in.nextInt(); if(n < 0) return; if(n == 1){ Sys

java蛇形矩阵实现方法

四.蛇形矩阵描述:  蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. 输入 正整数N(N不大于100) 输出 输出一个N行的蛇形矩阵. 样例输入:5 样例输出: 1 3 6 10 15 2 5 9 14 16 4 8 13 17 22 7 12 18 21 23 11 19 20 24 25 接口说明 /**  *  * 输入一个不大于100的数字,产生蛇形矩阵字符串  *  * 例如输入5时,产生如下蛇形矩阵输出字符串,每个数字之间用空格分开  * 1 3 6 10 15  * 2

华为OJ——蛇形矩阵

题目描述 题目说明 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. 样例输入 5 样例输出 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 接口说明 原型 void GetResult(int Num, char * pResult); 输入参数: int Num:输入的正整数N 输出参数: int * pResult:指向存放蛇形矩阵的字符串指针 指针指向的内存区域保证有效 返回值: void 输入描述: 输入正整数N(N不大于100) 输出描述: 输出一个N

第3章第1节练习题1 蛇形矩阵

问题描述 蛇形矩阵即使用二维数组完成来回曲折的赋值,举例说明如下所示的形式即为蛇形数组. 算法思想 观察该二维数组,只是可以"人为"的发现它就像一条蛇的形状来回爬行,然而并没有什么卵用,不能明确的站在计算机的角度上来实现这个数组.于是将所有的下标列出来便可以得到下述所述的曲线走势. 然后结合第一张图便可以发现 数字从2~3的过程中,下标行变化范围是0~1:下标列范围是1~0: 数字从4~6的过程中,下标行变化范围是2~0:下标列范围是0~2: 数字从7~10的过程中,下标行变化范围是0

蛇形矩阵的实现

通过java实现两种不同的蛇形矩阵. 之前在一个面试题上看到了一个关于写出一个蛇形矩阵的问题,当时很是纠结,后来分析了一下之后,就觉的问题不是那么的难了. 目前我见过的蛇形矩阵的考法有两种,一种是对角线式的蛇形矩阵,另一种是回旋绕的蛇形矩阵: **1 3 4 10** **2 5 9** 11 **6 8** 12 15 **7** 13 14 16 对于对角线的类型来说,是比较简单的. 1.首先我们可以观察数字从小到大的变化,会发现其实角标的变化分别是. 0 0 0 1 0 2 0 3 1 0

ACM_蛇形矩阵

蛇行矩阵 Time Limit: 4000/2000ms (Java/Others) Problem Description: 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. Input: 本题有多组数据,每组数据由一个正整数N组成.(N不大于100) Output: 对于每一组数据,输出一个N行的蛇形矩阵.两组输出之间不要额外的空行.矩阵三角中同一行的数字用一个空格分开.行尾不要多余的空格. Sample Input: 5 Sample Output: 1 3 6 10 15 2 5

蛇形矩阵

如上图所示,是一个4*4的蛇形矩阵 算法思路 由图可观察到该矩阵可分为上三角和下三角.每个三角要根据蛇形的奇偶行进行计数. 算法代码 #include <stdio.h> int main() { int a[10][10]; int n; printf("Input n:"); scanf("%d",&n); int i=0,j=0,k=0; int count=1; for(i=0;i<n;i++)/*上三角 i代表是蛇形的奇偶行*/

随便写的蛇形矩阵

[问题描述] 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. [要求] [数据输入]本题有多组数据,每组数据由一个正整数N组成.(N不大于100) [数据输出]对于每一组数据,输出一个N行的蛇形矩阵.两组输出之间不要额外的空行.矩阵三角中同一行的数字用一个空格分开.行尾不要多余的空格. [样例输入] 5 [样例输出] 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 /*作者:Yosha*/ #include "stdio.h" int main() {