Java,回形数

         回形数基本思路:

        用不同的四个分支分别表示向右向下向左向上,假如i表示数组的行数,j表示数组的列数,向右向左就是控制j的加减,向上向下就是控制i的加减。

        

class exercise
{public static void main(String[] args){//回形数的实现Scanner scan = new Scanner(System.in);int n = scan.nextInt();int[][] arr = new int[n][n];int x = n;//x和y是用来看还有多少列和行没被占用int y = n;//x表示列数,y表示行数int dir = 0;//dir用来控制方向int i = 0;//i和j用来控制数组列和行的赋值int j = 0;int count = 0;//count控制边界for (int a = 1; a <= n * n; a++)//产生1到n*n的数{if(dir % 4 == 0)//向右{arr[i][j] = a;j++;count++;if(count == x)//等于剩余的列数时就换方向{dir++;//换方向y -= 1;//行数减一i++;//设置下一个起点j--;//防止数组访问越界count = 0;//刷新count的值,用于下一次的方向的计数}}else if(dir % 4 == 1)//向下{arr[i][j] = a;i++;count++;if(count == y){dir++;//换方向x -= 1;//列数减一j--;//设置下一个起点i--;//防止数组访问越界count = 0;}}else if(dir % 4 == 2)//向左{arr[i][j] = a;j--;count++;if(count == x){dir++;y -= 1;i--;j++;count = 0;}}else if(dir % 4 == 3)//向上{arr[i][j] = a;i--;count++;if(count == y){dir++;x -= 1;j++;i++;count = 0;}}}for (int k = 0; k < arr.length; k++){for (int l = 0; l < arr[0].length; l++){System.out.print(arr[k][l] + "\t\t");}System.out.println();}}
}

         1.count是用来计算赋值的次数的,左右方向上,当赋值次数等于剩余列数时,就换方向。上下方向上,当赋值次数等于剩余行数时,就换方向。而x和y就是用来记录剩余的列数和行数的。

        2.换方向时,要把赋值的起点换一下,每次换起点都是让赋值对象变为下一个方向的下一个元素。如图:

         3.每次赋值到终点时,以第一次为例,最后还有一个j++,j会变为5,而接下来的向下应该时要保持j为4才行,j为5时会数组访问越界。所以要在后面的换方向的if里面加上一个j--,中和掉多余加出来的1.

        4.count要放在循环外面定义,防止count在循环内,被错误刷新。每次换方向时也要记得将count重新赋值为0,用于下一次的计数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/115777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AOA-VMD-LSTM分类故障诊断】基于阿基米德算法AOA优化变分模态分解VMD的长短期记忆网络LSTM分类算法(Matlab代码)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Python配置镜像源

Python3安装pika的准备 Windows下配置镜像源可以按照如下操作。 1.winR执行%APPDATA% %APPDATA%后&#xff0c;创建pip文件夹&#xff0c;并创建pip.ini配置文件 查看此目录下是否有pip目录&#xff0c;如果没有则需要创建&#xff0c;并在pip目录下以文本方式添加pip.ini文件…

Node学习笔记之fs模块

fs 全称为 file system &#xff0c;称之为 文件系统 &#xff0c;是 Node.js 中的 内置模块 &#xff0c;可以对计算机中的磁盘进行操 作。 本章节会介绍如下几个操作&#xff1a; 文件写入文件读取文件移动与重命名文件删除文件夹操作查看资源状态 一、文件写入 文件写入就…

maven以及配置

oss oss配置 <!--oss--> <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.6.0</version></dependency> lombok <!--lombok--><dependency><gro…

什么是工程化思维

什么是工程化思维&#xff1f; 工程化思维&#xff08;Engineering Thinking&#xff09;是一种解决问题和做决策的方法&#xff0c;它强调系统性、逻辑性和效率。这种思维方式在工程学和其他技术领域中尤为常见&#xff0c;但其实它可以应用于生活的各个方面。以下是工程化思…

Telent

Telnet协议是一种远程登录协议&#xff0c;它允许用户通过网络连接到远程主机并在远程主机上执行命令。 Telnet协议是TCP/IP协议族中的一员&#xff0c;是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑…

CAPL如何实现27服务解锁

在文章《CANoe-如何实现27服务解锁》里,我们介绍了诊断控制台中如何实现27解锁,如果我想在CANoe中使用CAPL程序解锁的话,又要如何实现呢? CAPL脚本也是通过模拟手动操作来实现27解锁,所以步骤为: 发送10 03发送27 01接收67 01,获取seed值根据seed值和算法,计算出key值…

http post协议实现简单的rpc协议,WireShark抓包分析

文章目录 1.http 客户端-RPC客户端1.http 服务端-RPC服务端3.WireShark抓包分析3.1客户端到服务端的HTTP/JSON报文3.2服务端到客户端的HTTP/JSON报文 1.http 客户端-RPC客户端 import json import requests# 定义 RPC 客户端类 class RPCClient:def __init__(self, server_url…

ZYNQ linux调试LCD7789

一,硬件管脚 1,参数解释和实物 LVGL是一个开源的图形库,主要用于MCU上屏幕UI的部署,功能完善,封装合理,可裁切性强,也可以实现Linux上fbx的部署。LVGL官网LVGL - Light and Versatile Embedded Graphics Library 每根线的作用

接口测试 Jmeter 接口测试 —— 请求 Headers 与传参方式

一、 背景&#xff1a; 在使用 Jmeter 进行接口测试时&#xff0c;有些小伙伴不知道 Headers 和请求参数 (Parameters&#xff0c;Body Data) 的联系&#xff0c;本文主要讲 Content-Type 为 application/x-www-form-urlencoded 和 application/json 的场景。 1、使用 Parame…

[SWPUCTF 2023 秋季新生赛] web题解

文章目录 colorful_snakeNSS_HTTP_CHEKER一键连接!ez_talkPingpingpingUnS3rialize查查needIf_elseRCE-PLUSbackup colorful_snake 打开题目&#xff0c;查看js源码 直接搜flag 把那三行代码复制到控制器&#xff0c;得到flag NSS_HTTP_CHEKER 都是http请求基本知识 抓包按照…

如何保养维护实验室超声波清洗机

实验室是用于各个行业产品的研发以及检验的场所&#xff0c;所以对其中所使用的各种物品都有着极高的要求&#xff0c;因此只有品类齐全的实验室超声波清洗机能够满足实验室对于清洁以及其他方面的一些需求&#xff0c;但是要想实验室超声波清洗机设备的性能能够始终如一&#…

驱动开发day4

通过字符设备驱动的分步实现编写LED驱动&#xff0c;另外实现设备文件和驱动的绑定 head.h #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }…

linux驱动开发学习001:概述

linux的内核源码编译后&#xff0c;会生成一个总的镜像。镜像加载到内存中运行他&#xff0c;就会启动内核。驱动属于内核代码的一部分&#xff0c;对驱动修改要重编整个内核&#xff0c;麻烦但驱动可以独立于内核镜像外&#xff0c;并能动态加载和卸载字符设备驱动&#xff0c…

RHCE---Shell基础 2

文章目录 目录 文章目录 前言 一.变量 概述 定义 自定义变量 环境变量 概述&#xff1a; 定义环境变量&#xff1a; 位置变量 "$*"会把所有位置参数当成一个整体&#xff08;或者说当成一个单词 变量的赋值和作用域 read 命令 变量和引号 变量的作用域 变…

【茫茫架构路】1. Class File字节码文件解析

本文所有内容的JDK版本为 OpenJDK 11 JDK11 Class File官方说明。 Java解析字节码文件源码参考&#xff0c;以下为部分字节码解析源码展示。 public ClassFile(DataInputStream in) {try {//magic: 0xCAFEBABEthis.magic ClassReader.readInt(in);System.out.println("m…

高等数学啃书汇总重难点(五)定积分

最近都在忙着刷题&#xff0c;尤其是政治和英语也开始加量复习了&#xff0c;该系列断更了将近2个月~不过最近在刷题的时候又遇到一些瓶颈&#xff0c;因此回归基础来整理一下知史点~ 总的来说&#xff0c;虽然第五章也是重中之重&#xff0c;定理数量也很多&#xff0c;但&…

日常代码优化实现过程

实现方案一 判断逻辑支持跳过。 handleCheckStatus ({ status true, paymentApplyStatus true, writeOffStatus true }) {// 单据状态if (status && this.selectedRows.filter(item > item.status ! AUDITED).length) {this.$antdMessage.warning(请选择 [已审…

项目十一文件的应用

认识文件 概述 文件对大家来说很熟悉,常见的有txt文本文档,办公用的word文档等,主要作用就是保存数据 在C语言中,文件时计算机领域的一个重要概念,通常指存储在外部介质上数据的集合。操作系统以文件为单位对数据进行管理,以文件名访问文件。 分类 按文件内容划分源…

华为认证 | 2023年全国华为HCIE认证通过率是多少?

华为HCIE认证是很受业界认可的&#xff0c;毕竟HCIE的主体是华为&#xff0c;目前华为在业界的认可度比较高&#xff0c;设备的覆盖率也很高&#xff0c;所以参加华为认证的人比较多。 尤其是华为认证中的专家级认证—HCIE。 很多人都想知道全国有多少人通过了华为HCIE认证&a…