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  5  9  14 16
 * 4  8  13 17 22
 * 7  12 18 21 23
 * 11 19 20 24 25
 *
 *
 * @param number 不大于100的数字
 * @return 蛇形矩阵字符串(需要控制换行)
 */
public String getResult(int number);

程序如下:16
17     public static int[][] show(int num) {
18         int[][] ary = new int[num][num];
19         int start = 1;
20
21         for (int i = 1; i < 2 * num; i++) {
22             if (i <= num) {
23                 int startPoint = i - 1;
24
25                 for (int j = 0; j < i; j++) {
26
27                     ary[startPoint--][j] = start++; // 方向都是从j=0的方向开始
28
29                 }
30             } else {
31                 int foot = num - 1;
32                 int footEnd = i - num;
33
34                 for (int k = 0; k < 2 * num - i; k++) {
35                     if (num % 2 == 1) { // 考虑sqrt为奇数和偶数情况
36                         if (i % 2 == 1) { // sqrt为奇数,i则为偶数
37                             ary[foot--][footEnd++] = start++;
38                         } else {
39                             ary[footEnd++][foot--] = start++;
40                         }
41                     } else if (num % 2 == 0) {
42                         if (i % 2 == 0) {
43                             ary[foot--][footEnd++] = start++;
44                         } else {
45                             ary[footEnd++][foot--] = start++;
46                         }
47
48                     }
49                 }
50             }
51         }
52
53         for (int i = 0; i < num; i++) {
54             for (int j = 0; j < num; j++) {
55                 System.out.print(ary[i][j] + "\t");
56             }
57
58             System.out.println();
59         }
60
61         return ary;
62     }
63
64 }
时间: 2024-10-09 01:23:23

java蛇形矩阵实现方法的相关文章

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

(水题)蛇形矩阵

1160 蛇形矩阵 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和. 输入描述 Input Description n(即n行n列) 输出描述 Output Description n+1行,n行为组成的矩阵,最后一行为

1010: 蛇形矩阵

Description 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. Input 本题有多组数据,每组数据由一个正整数N组成.(N不大于100) Output 对于每一组数据,输出一个N行的蛇形矩阵.两组输出之间不要额外的空行.矩阵三角中同一行的数字用一个空格分开.行尾不要多余的空格. Sample Input 5 Sample Output 1 3 6 10 152 5 9 144 8 137 1211 <pre name="code" class="cp

华为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

蛇形矩阵的实现

通过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

CODE[VS]1160 蛇形矩阵

题目描述 Description 小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和. 输入描述 Input Description n(即n行n列) 输出描述 Output Description n+1行,n行为组成的矩阵,最后一行为对角线数字之和 样例输入 Sample Input 3 样例输出 Sample Output 5 4 36

Java多线程死锁避免方法

一.什么是死锁当两个或两个以上的线程在执行过程中,因为争夺资源而造成的一种相互等待的状态,由于存在一种环路的锁依赖关系而永远地等待下去,如果没有外部干涉,他们将永远等待下去,此时的这个状态称之为死锁.经典的 "哲学家进餐" 问题很好地描述了死锁状况:5个哲学家去吃中餐,坐在一张圆桌旁,他们有5根筷子(而不是5双),并且每两个人中间放一根筷子,哲学家们要么在思考,要么在进餐,每个人都需要一双筷子才能吃到东西,并在吃完后将筷子放回原处继续思考,有些筷子管理算法 (1) 能够使每个人都能相对

学java教程之普通方法重载

学编程吧学java教程之普通方法重载发布了,欢迎通过xuebiancheng8.com来访问 先来看什么是普通方法重载呢,先来看一个例子 public class Person{ String username; int age; public void hello(){ System.out.println("Hello"); } public void hello(String username){ System.out.println("你好"+usernam