【华为OJ】【076-蛇形矩阵】

【华为OJ】【算法总篇章】


【华为OJ】【076-蛇形矩阵】

【工程下载】


题目描述

题目说明
    蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
样例输入
    5
样例输出
    1 3 6 10 15
    2 5 9 14
    4 8 13
    7 12
    11

输入描述

输入正整数N(N不大于100)

输出描述

输出一个N行的蛇形矩阵。

输入例子

4

输出例子

1 3 6 10
2 5 9
4 8
7

算法实现

import java.util.Scanner;

/**
 * Author: 王俊超
 * Date: 2016-01-03 13:58
 * Declaration: All Rights Reserved !!!
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            System.out.print(serpentineMatrix(n));
        }

        scanner.close();
    }

    /**
     * 蛇形矩阵
     *
     * @param n 矩阵行数
     * @return 矩阵输出结果
     */
    private static String serpentineMatrix(int n) {

        StringBuilder builder = new StringBuilder();

        for (int i = 1; i <= n; i++) {
            // 每一行的第一个元素是(i-1)*i/2+1
            // 每一行的元素个数是n-i
            // 初始间隔是i+1,之后每一个间隔比上一个间隔多1,之后的每个元素是前一个元素加上间隔
            for (int j = 1, start = (i - 1) * i / 2 + 1, step = i + 1; j <= n - i + 1; j++, start += step, step++) {
                builder.append(start).append(‘ ‘);
            }

            // 设置换行符
            builder.setCharAt(builder.length()-1, ‘\n‘);

        }

        return builder.toString();
    }
}
时间: 2024-12-20 20:45:31

【华为OJ】【076-蛇形矩阵】的相关文章

华为笔试题--蛇形矩阵

1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 int main() 6 { 7 int n; 8 while(cin >> n) { 9 vector<vector<int>> matrix(n, vector<int>(n)); 10 int count = 0; 11 for(int i = 0; i < n; ++i) { 12 f

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

OJ初级-句子逆序,近义词维护,数字颠倒,蛇形矩阵

备注:所有基础的练习题都不能借助相应功能的工具函数 一.句子逆序描述:  将一个英文语句以单词为单位逆序排放.例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 接口说明 /**  * 反转句子  *   * @param sentence 原句子  * @return 反转后的句子  */ public String reverse(String sentence); 二.近义词维护 给定接口,设置两个单词相互

【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组

描述:  编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true:不满足时返回false. 知识点: 语言基础,字符串,循环,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归    题目来源: 内部整理  练习阶段: 初级  运行时间限制: 10Sec 内存限制: 128MByte 输入: 输入输入的数据个数 输入一个int型数组 输出: 返

蛇形矩阵

如上图所示,是一个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() {

(水题)蛇形矩阵

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行为组成的矩阵,最后一行为

华为OJ:汽水瓶

题目有点像小学数学题,因为三个空瓶可以换一瓶汽水,但喝完一瓶汽水就可以得到一个空瓶.所以相当于两个空瓶就可以换到一瓶汽水. 把输入除以2即可.这里讲一下java多出入,可以用in.hasNext(),就相当于C/C++里面的while(scanf("%d",n)!=EOF). import java.util.Scanner; public class qishuiping { public static void main(String args[]){ Scanner input=

华为OJ:分段排序

题目有点绕,一个是要二分,用三个字符串,存前,中,后三个,前,后部分都降序排序,然后后半部分再反转一下,讲三部分合起来就好了. import java.util.Scanner; public class dividesort { public static void sort(StringBuffer s){ for(int i=0;i<s.length();i++){ for(int j=i;j<s.length();j++){ if(s.charAt(i)>s.charAt(j))