蓝桥杯vip试题 基础练习 回形取数(java实现)

2024-03-19 02:38

本文主要是介绍蓝桥杯vip试题 基础练习 回形取数(java实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

  回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。

输入格式

  输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。

输出格式

  输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。

样例输入

3 3
1 2 3
4 5 6
7 8 9

样例输出

1 4 7 8 9 6 3 2 5

样例输入

3 2
1 2
3 4
5 6

样例输出

1 3 5 6 4 2

随便讲讲:虽然这题有很多解答,但是我发现java的没有很多说得很细致的,我就小白式地总结一下。这题要通过转圈圈遍历所有数,每转一次的四个点很重要。因为每转完一圈范围会缩小,所以转完一圈这四个顶点的值也要相应调整,然后调整新的起点,在这里就是x和y。每次转圈,都是经过四条边,每条边的“前进动作”也不一样,所以每条边都用一个while循环操作,分离出来一直重复这四个循环就好了。这题还有个关键地方是结束条件。当左边顶点越过右边顶点,就表示已经遍历完。但是按照我这种算法,当while循环后,如果是奇数阶方阵(m=n&m为奇数),最中间那个数不会被遍历到。但是这恰恰为我提供了便利,因为我还需要考虑最后一个输出不能带空格的问题。所以在循环中我用count记录已输出了多少个数,如果已经已经到最后一个了,就需要跳出循环单独处理。但是如果是奇数阶方阵,它是根据while循环中的条件跳出的,因为它始终只能输出总数-1个。

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int m = in.nextInt();int n = in.nextInt();int[][] matrix = new int[m][n];for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) matrix[i][j] = in.nextInt();int leftUpRow = 0;int leftUpCol = 0;int rightDownRow = m - 1;int rightDownCol = n - 1;int count = 0, x = 0, y = 0;while (leftUpRow <= rightDownRow && leftUpCol <= rightDownCol) {x = leftUpRow;y = leftUpCol;while (x < rightDownRow) {if (++count == m * n) break;System.out.print(matrix[x][y] + " ");x++;}rightDownRow--;while (y < rightDownCol) {if (++count == m * n) break;System.out.print(matrix[x][y] + " ");y++;}rightDownCol--;while (x > leftUpRow) {if (++count == m * n) break;System.out.print(matrix[x][y] + " ");x--;}leftUpRow++;while (y > leftUpCol) {if (++count == m * n) break;System.out.print(matrix[x][y] + " ");y--;}leftUpCol++;}if (count == m * n) {System.out.print(matrix[x][y]);} else {System.out.print(matrix[m / 2][n / 2]);}in.close();}}

这篇关于蓝桥杯vip试题 基础练习 回形取数(java实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/824524

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技