zoukankan      html  css  js  c++  java
  • 蓝桥杯普及题:蛇行矩阵

    其实刚看到这个题目的时候完全没看懂意思,走进误区了,还以为‘矩阵’这俩字是关键字,还联想到了高数里面的矩阵,后来看了别人的解题思路才发现就是一个简单找规律的题目。

    解析:这题的规律有很多种,也有很多实现方法,我简单试了三种方法,这里只记录一种。

    先说下这组数据的几个特点:

    • 数据的行数和列数由输入的正整数N决定,也就是说整个上三角形由N行、N列组成。
    • 每行数据的个数和当前行的所在行数成反比。
    • 整个矩阵相当于一个二维数组。
    • 第一行的第一个数字固定是1。
    • 从第二行开始(包括第二行),每行的首个数字符合:'每行的第一个数字'='上一行的第一个数字'+'上一行的所在行数'。
    • 每行数据中,相邻的两个数相差的大小row符合:row = row + '当前行数' + '左边数字所在列数'。

    我这里总共列了6个特点,前三个特点决定了这个矩阵的形状是一个上三角形,第5个特点决定了每行的首个数字,第6个特点决定了每行中的所有数据。其实这题除了找规律以外,我一直不知道要考察的知识点是什么,难道是要考察二维数组么,get不到这题的点。

    package _12_26_test;
    
    import java.util.Scanner;
    
    import javax.sound.midi.Soundbank;
    
    public class four {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		Scanner scanner = new Scanner(System.in);
    
    		int N = scanner.nextInt();
    
    		int Num = N;
    		// 用于存放行中的每个数据
    		int row = 1;
    		// 用于存放每行的首个数据
    		int rank = 1;
    		// 代表当前行
    		for (int k = 1; k <= N; k++) {
    
    			// 代表当前列
    			for (int i = 1; i <= Num; i++) {
    
    				// 输出每行中的数字
    				System.out.print(row + "	");
    				// 得到当前行的下一个数据
    				row = row + k + i;
    
    			}
    
    			// 得到每行中的首个数字
    			rank = rank + k;
    
    			// 将下一行的首个数据赋值给row
    			row = rank;
    
    			// 每行数据的个数逐渐递减
    			Num--;
    
    			System.out.println();
    
    		}
    
    	}
    
    }
    
    

    测试效果

  • 相关阅读:
    解决无法连接mysql问题
    nodejs基础(二)
    JS面试题
    node初学者笔记
    nodejs安装、环境配置和测试
    Linux常用命令笔记
    MangoDb的安装及使用
    Redis安装、命令以及设置密码遇到的问题
    测试端口通不通问题
    发布版本Debug和Release的区别
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/12653401.html
Copyright © 2011-2022 走看看