蛇形矩阵蒸滴好玩

这篇具有很好参考价值的文章主要介绍了蛇形矩阵蒸滴好玩。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先来看看题目:

描述

康托尔三角是由著名数学家康托尔设计的一个整数三角,可以用来证明所有有理数与自然数一一对应,亦即有理数集是一个可数集。康托尔三角的构造如下:
01 02 06 07 15 16 28 29 45 46
03 05 08 14 17 27 30 44 47
04 09 13 18 26 31 43 48
10 12 19 25 32 42 49
11 20 24 33 41 50
21 23 34 40 51
22 35 39 52
36 38 53
37 54
55
它的填充规律是:将自然数按照从小到大的顺序从左上角往右下角按照蛇形排列:从左下到右上,再从右上到左下,每当到达边界之后就改变填充方向。
按照这种方式填充的三角形,给定行值和列值之后,填充的自然数是确定的。
规定行值和列值均从1开始计算。用(行,列)的方式进行描述。那么有:
(1,1)为1,(1,4)为7,(3,4)为18,(6,5)为51,(8,2)为38.
给定一个行值r和列值c,请求出对应的自然数。题目保证1≤r,c≤10,000

格式

输入格式

一行,两个整数,中间用空格分隔,表示行值r和列值c。

输出格式

一个正整数,表示该位置应填充的数据

样例

输入样例

5  4

输出样例

33

首先我想到的是用数组将这个三角形打表,但是很可惜,超内存了!后面苦思冥想,发现了其中的规律。

现在假设轮替的轮数为 turn ,我们可以发现通过所给出的行值和列值得到所属的轮数。比如数字9(2,3),11(5,1)。turn=r+c-1.

蛇形矩阵蒸滴好玩,Java,java

知道轮数之后一切都好办了,这时候我们分turn为奇数和偶数考虑,利用等差数列求和公式来计算。

超内存代码:

public class Main{
        Scanner s=new Scanner(System.in);
        int r,c;
        int[][] SnakeMatrix=new int[10000][];
        int turn=1,cnt=1,i,j;
        for(i=0;i<10000;i++) {
            SnakeMatrix[i]=new int[10000-i];
        }
        while(turn<=10000) {//模拟生成蛇形矩阵
            if(turn%2==1) {
                for(i=turn-1,j=0;i>=0&&j<=turn-1;i--,j++) {
                    SnakeMatrix[i][j]=cnt++;
                }
            }else {
                for(i=0,j=turn-1;i<=turn-1&&j>=0;i++,j--) {
                    SnakeMatrix[i][j]=cnt++;
                }
            }
            turn++;
        }
}

 

AC代码 文章来源地址https://www.toymoban.com/news/detail-716430.html


import java.util.Scanner;

public class SnakeMatrix {
    public static void main(String[] args) {
        Scanner get=new Scanner(System.in);
        int r,c,turn,ans;
        int n=10;
        r=get.nextInt();
        c=get.nextInt();
        turn=r+c-1;
        if(turn%2!=0){
            ans=(turn+1)/2*turn-(turn-c);
        }else{
            ans=turn/2*(turn+1)-c+1;
        }
        System.out.println(ans);
    }
}

到了这里,关于蛇形矩阵蒸滴好玩的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言蛇形矩阵

    山有榛,隰有苓。云谁之思?西方美人。 --邶风·简兮 话不多说,直接看图 通过观察图表,我想到了这种方法: 我将数字放置的位置分为两大类:向右走和向左走 每大类里又分为3小类: 向左走:(1)能往左下往左下(2)左下不行向下移(3)下移不行向右移 向右走:(

    2024年01月21日
    浏览(31)
  • 蛇形矩阵python

    作者简介 :一名后端开发人员,每天分享后端开发以及人工智能相关技术,行业前沿信息,面试宝典。 座右铭 :未来是不可确定的,慢慢来是最快的。 个人主页 :极客李华-CSDN博客 合作方式 :私聊+ 这个专栏内容 :BAT等大厂常见后端java开发面试题详细讲解,更新数目10

    2024年02月12日
    浏览(24)
  • 回型矩阵|蛇形矩阵|上三角矩阵|矩阵转置|二维数组打印问题

    二维数组,作为一种存放一系列数的载体,不免和数学中用于存放数的数表——矩阵,有着密切的联系。矩阵本身就有些抽象,需要设计一个程序精准打印出来更是有难度,所以今天便来总结一些二维数组与矩阵打印的问题该如何解决。 (题目取自牛客网BC133-BC138) 给你一个

    2024年02月03日
    浏览(36)
  • 华为机试题:HJ35 蛇形矩阵(python)

    描述 : 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 例如,当输入5时,应该输出的三角形为: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 输入描述 : 输入正整数N(N不大于100) 输出描述 :输出一个N行的蛇形矩阵。 示例1 Python3 【Python】input()函数用法小结 常用的强转类

    2024年02月07日
    浏览(28)
  • 【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法

    👑作者主页:@进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:每日挠头算法题 如果无聊的话,就来逛逛 我的博客栈 吧! 🌹 链接 :756. 蛇形矩阵 输入两个整数 n 和 m ,输出一个 n 行 m 列的矩阵,将数字 1 到 n × m 按照回字蛇形填充至矩阵中。 具体矩

    2024年02月02日
    浏览(35)
  • Java中的异常语法知识居然这么好玩!后悔没有早点学习

    学习异常后,发现异常的知识是多么的吸引人!不仅可以用来标记错误,还可以自己定义一个异常,用来实现自己想完成的业务逻辑,接下来一起去学习吧 目录 一、异常的概念及体系结构 1.异常的概念 2.异常的体系结构 3.异常的分类  二、怎么处理异常 1.防御式编程 2.异常

    2024年02月04日
    浏览(39)
  • 【算法 | 模拟No.4】AcWing 756. 蛇形矩阵 & AcWing 40. 顺时针打印矩阵

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【AcWing算法提高学习专栏】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助 🍓希望我们一起努力、成

    2024年01月16日
    浏览(42)
  • 数据结构第七周 :(稀疏矩阵快速转置 + 简单文本编辑器 + 三元组的矩阵加法 + 九宫格数独游戏 + 数组主元素 + 螺旋数字矩阵 + 蛇形矩阵)

    【问题描述】 稀疏矩阵的存储不宜用二维数组存储每个元素,那样的话会浪费很多的存储空间。所以可以使用一个一维数组存储其中的非零元素。这个一维数组的元素类型是一个三元组,由非零元素在该稀疏矩阵中的位置(行号和列号对)以及该元组的值构成。而矩阵转置就

    2023年04月21日
    浏览(32)
  • 【花雕动手做】有趣好玩的音乐可视化系列项目(32)--P10矩阵LED单元板

    偶然心血来潮,想要做一个音乐可视化的系列专题。这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,逐步积累些有用的音乐频谱可视化的资料,也会争取成型一些实用

    2024年02月10日
    浏览(28)
  • 二维矩阵的前缀和+子矩阵的和-java

    二维矩阵的前缀和,我们可以通过求前缀和来把求二维矩阵的求某一块的和,从时间复杂度O(n^2)变成O(1)常数级,大大降低了时间复杂度 文章目录 前言 一、二维矩阵的前缀和应该怎么做? 1.引入一个二维数组 2.二维前缀和矩阵数组 3.推出二维矩阵前缀和的公式计算 3.1 代码如

    2024年03月27日
    浏览(88)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包