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();
    
    		}
    
    	}
    
    }
    
    

    测试效果

  • 相关阅读:
    triplet loss 在深度学习中主要应用在什么地方?有什么明显的优势?
    一个评测指标就是MAP(Mean Average Precision)平均精度均值。
    机器学习术语中英对照表
    logistic softmax
    mysql导出导入sql文件方法(linux)
    mysql分区表
    matplotlib安装错误依赖问题解决
    linux命令集合
    linux下安装或升级GCC4.8.2,以支持C++11标准[转]
    linux 如何显示一个文件的某几行(中间几行)
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/12653401.html
Copyright © 2011-2022 走看看