2011 蓝桥杯模拟试题08 回型矩阵(java)

【Java数组算法:“回形矩阵”的生成】 Java回形数组的生成 阅读详情


从键盘输入一个整数( 1~20)


则以该数字为矩阵的大小,把 1,2,3⋯ n*n 的数字按照顺时针螺旋的形式填入其中。例如:


输入数字 2,则程序输出:
1 2 

4 3 


输入数字 3,则程序输出:
1 2 3 
8 9 4 

7 6 5 


输入数字 4, 则程序输出:

1 2 3 4

12 13 14 5

11 16 15 6 

10 9 8 7


思路:

    我们可以把矩阵n*n看成是多个圈,一个圈,一个圈的。从外圈往里圈进行赋值,只要给每个圈的四条边顺时针赋值即可。注意的一点的是,当输入数字n为奇数时,最里面的是一个数字;当输入数字n为偶数时,最里面的是圈。


代码如下:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();	//矩阵大小
		int[][] arr = new int[n][n];
		int s = 1;	//初始值
		for(int i = 0; i < n/2; i++){	//第几圈,从外圈到内圈进行 顺时针赋值  
			for(int j = i; j <= n-i-1; j++){		//第一条边 从左到右赋值
				arr[i][j]=s++;
			}
			for(int k = i+1; k <= n-i-1; k++){		//第二条边 从上往下赋值
				arr[k][n-i-1]=s++;
			}
			for(int l = n-i-2;l>=i;l--){	//第三条边 从右往左赋值
				arr[n-i-1][l]=s++;
			}
			for(int m = n-i-2;m>=i+1;m--){	//第四条边 从下往上
				arr[m][i]=s++;
			}
		}
		
		//如果是奇数,中间有一个数
		if(n%2==1){
			arr[n/2][n/2]=s;
		}
		
		//输出
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				System.out.printf("%3d  ",arr[i][j]);
			}
			System.out.println();
		}
	}

}

蓝桥杯Java模拟试题 望参考 蓝桥杯习题资源加答案详细解释. 立即下载

相关推荐

蓝桥杯 java 回形取数

import java.util.Scanner; public class Main { public static void main(String[] args) { int a[][],b[],c[]; Scanner reader=new Scanner(System.in); int n,m; n=reader.nextInt(); m=reader.nextInt(); a=new int[n+2][m+2]; b=new int[4]; c=new int[4]; for(int i=0;i<n+2;i++) for(int j=0;j<m+2;j++) { if(i==0||i==n+1||j==0||j==m+1) a[i][j]='#'; else a[i][j]=reader.nextInt(); } b[0]=1;b[1]=0;b[2]=-1;b[3]=0; c[0]=0;c[1]=1;c[2]=0;c[3]=-1; int i=1,j=1,k=0,count=0; while(count!=m*n) { if(a[i][j]!='#') { System.out.printf("%d ", a[i][j]); a[i][j]='#'; count++; i+=b[k];j+=c[k]; } else { if(k==0) { i--;k=1; j+=c[k]; } else if(k==1) { j--;k=2; i+=b[k]; } else if(k==2) { i++;k=3; j+=c[k]; } else { j++;k=0; i+=b[k]; } } } } }

蓝桥杯第二次模拟赛JAVA题解

蓝桥杯第二次模拟赛JAVA题解

小羊不会飞的博客 9974

JAVA回字方阵

用JAVA写的一个回字型方针。课堂作业。

输出回型矩阵

输出回型矩阵

m0_73530538的博客 591

10bit SAR ADC电路:200多页设计与仿真文档,附gpdk045工艺与testbench,可直接导入Virtuoso仿真,含以太网、PLL电路例程及进阶ADC

拥有超过200页的详细设计和仿真文档,它以gpdk045工艺为基础,testbench均可直接导入virtuoso仿真,为我们提供了一个全面了解ADC电路设计的绝佳机会。通过对10bit SAR ADC电路的详细解析,我们不仅了解了其设计背后的原理和实现方法,还体会到了数字与模拟技术的交融之美。这个SAR ADC的结构采用了经典的电荷重分配架构。一个10bit SAR ADC电路,有200多页详细的设计和仿真文档,附带对应的gpdk045工艺,testbench都有,可直接导入virtuoso仿真。

OMyAVKmGPBOF的博客 1335

广东电信兆能Z82盒子救砖记:手把手教你用U盘强刷HI3798MV100固件(附短接图)

本文详细介绍了广东电信兆能Z82盒子变砖后的救砖方法,重点讲解了使用U盘强刷HI3798MV100固件的全流程,包括诊断、准备工作、短接操作及刷机后的优化设置。特别针对m8233主板和8188无线方案的机型,提供了实用的短接图和操作技巧,帮助用户成功恢复设备。

weixin_30325487的博客 405

蓝桥杯十字图- - 联想回型数组的构造(模拟)

蓝桥杯题目,绘制出十字图,可以看出,是一圈一圈绘制的。回想起牛客网上的回型矩阵题目(下文的回型数组也就是回型矩阵),题目链接如下 回型矩阵 (nowcoder.com)https://ac.nowcoder.com/acm/problem/22230直接上图比较 当时写这道回型数组的题目,没有思路,看了题解后发现,就是一圈一圈走(模拟)。 #include <iostream> #include <vector> using namespace std; int...

weixin_54010759的博客 759

增程式永磁电机发电系统电压环二自由度控制器设计

本论文主要研究增程式永磁电机发电系统的电压环二自由度控制器设计。该系统采用二自由度控制策略,通过精确调节电压环和电流环,显著提高系统的动态响应性能和稳态稳定性。基于SVPWM(空间矢量脉宽调制)技术,本研究设计的电压环控制器能够在负载突变和外部扰动的情况下,快速恢复并保持电压稳定,从而满足增程式永磁电机发电系统对电压精度和稳定性的高要求。仿真分析表明,所设计的控制器在不同工况下展现出良好的电压稳定性、较短的响应时间和较低的稳态误差,能够有效抑制电压波动并提高系统的鲁棒性。实验结果表明,控制器在维持高效能和高

weixin_44553616的博客 898

蓝桥杯基础练习——矩阵的回形取数(C语言)

一、问题描述: 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式:   输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出格式:   输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行首与行末不要有多余的空格。 样例输入1: 3 3 1 2 3 4 5 6 7 8 9 样例输出1: 1 4 7 8 9...

人生处处是围城,一切都是最好的安排! 2268

CCD 技术介绍(基于innovus引擎CCOpt)

CCD:全称是,并行优化clock和data path。CCOpt:全称是Clock的timing分为两种模式,和。preCTS并没有clock,因此需要建立一个,从clock端口到寄存器CK端的来自sdc中的设置;postCTSupdateIO latency,clock就会自动的转换成propagatedclock,这时就是实际时钟互连线网络的delay。在实际设计中,clock起始于ideal。

m0_61003348的博客 8980

从零构建NVENC编码器:一个游戏开发者的实战手册

本文详细介绍了如何从零构建NVENC编码器,特别针对游戏开发者提供实战指南。内容涵盖NVENC基础概念、DirectX纹理捕获、异步编码优化及高级特性配置,帮助开发者高效集成硬件编码技术到游戏引擎中,实现高性能游戏录制和直播功能。重点解析了NVIDIA专用编码芯片的优势与API使用技巧。

weixin_29292431的博客 366

图形矩阵(回型&蛇型)

回型矩阵 回形矩阵有n行n列;数字按顺时针或者逆时针递增。 第一圈: 上边界:y不变,x++;右边界:x不变,y++;下边界:y不变,x--;左边界:x不变,y-- 第二圈: 上边界:y+1不变,(x+1)++;右边界:x+1不变,(y+1)++;下边界:y+1不变,(x+1)--; 左边界:x+1不变,(y+1)-- static void printN(int n) { int[][] arr = new int[n][n]; int count = 1;

qq_64030389的博客 2893

UWB灵犀遥控器方案介绍

UWB灵犀指向遥控器的技术原理和方案介绍

xiongdauwb的博客 3903

2011蓝桥杯java试题及部分参考答案

此文由老猫整理,转载请注明出处:http://blog.youkuaiyun.com/nthack5730/article/details/49841549 更多有关老猫的文章:http://blog.youkuaiyun.com/nthack5730

机智猫 1万+

YOLOv11改进策略【注意力机制篇】| SE、CBAM、ECA、CA、Swin Transformer等注意力机制全面解析与应用

本文详细介绍了五种主流的注意力机制及其在YOLOv11中的应用。通过合理的模块选择和位置部署,注意力机制能够显著提升目标检测性能。

QQ_778132974的博客 877

快速傅里叶变换(FFT)的汇编实现在DSP开发中

在数字信号处理(Digital Signal Processing,DSP)开发中,使用汇编语言实现FFT可以进一步提高计算性能和优化系统资源的使用。FFT是一种分治算法,它通过将一个长度为N的离散时间域序列分解为多个长度为N/2的子序列,然后递归地进行计算。开发者可以根据实际需求,结合具体的硬件平台和编译器工具链,对FFT的汇编实现进行优化和定制化。需要注意的是,上述示例代码中只给出了FFT的基本框架,具体的合并操作及其他细节需要根据实际需求进行实现。上述示例代码演示了一个简单的FFT汇编实现。

QoTypescript的博客 685

java实现C语言的溢出计算,Java实现 蓝桥杯 算法提高 计算超阶乘(暴力)

试题 算法提高 计算超阶乘问题描述计算1*(1+k)(1+2k)(1+3k)…(1+n*k-k)的末尾有多少个0,最后一位非0位是多少。输入格式输入的第一行包含两个整数n, k。输出格式输出两行,每行一个整数,分别表示末尾0的个数和最后一个非0位。样例输入15 2样例输出05数据规模和约定1<=k<=10,1<=n<=1000000。PS:在计算的过程中就把末尾的0删掉im...

weixin_29193359的博客 230

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

蓝桥杯 回形取数

题目描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式   输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出   输出只有一行,共m*n个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 样例输入 3 3 1 ...

weixin_33806509的博客 1027

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

蓝桥杯精选赛题系列——回形取数

题目描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转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 运行限制 最大运行时间:1s 最

wzy的博客 849

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

回形取数---蓝桥杯

基础练习 回形取数 时间限制:1.0s 内存限制:512.0MB 问题描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式   输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出格式   输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔...

qiaomm的个人博客 591

算法:Java实现回形方阵的生成

回形方阵是用自然数以回形的方式填充的方阵,这里的回形填充是指从矩阵左上角开始,按顺时针方向从外向内螺旋依次地填充。如一个5阶的回形方阵: 12345161718196152425207142322218131211109 \begin{matrix} 1 & 2 & 3 & 4 & 5\\ 16 & 17 & 18 & 19 & 6\\ 15 & 24 & 25 & 20 & 7\\ 14 & 23 &a

BuildUp 2028

Java数组练习Demo

回形数格式方阵的实现 从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出: 1 2 4 3 输入数字3,则程序输出: 1 2 3 8 9 4 7 6 5 输入数字4, 则程序输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 public static void main(String[] args) { int n = 7; int[]

weixin_45505597的博客 700

回型矩阵:JAVA

解题思路:通过定义四条边界;top,left,right,bottom,来循环,当top>=bottom&&left>=right的时候循环终止循环结束的条件:来源:牛客网。

2302_81104841的博客 1034

java 输出回形_面试题:Java回形数组

最近遇到一个面试题。给定一个数字n,输出一个n阶矩阵。矩阵中的元素为1到n²。按回形排列eg1 :输入:n=2输出:1 24 3eg2:输入:n=3输出:1 2 38 9 47 6 5思路:这个题属于现实中遇到很简单,但是程序实现还是有些难度的问题。面试的时候面试官让我手写出这个问题的解法,无奈最后实在没写出来。纸上写代码太难了。这个问题其实需要分成三个层次去看。第一层看出来,此问...

weixin_36018183的博客 398

回形矩阵 - Java

作战大师Qcm —— 原创代码, 转载请附注出处。 /** * @name getVortexNumber * @param length * @explain 获得 [回形数组] */ private static void getVortexNumber(int length) { int num = 1; // 计数器 int len = length; // 矩阵 的 最大边长 int border = length; // "从外到内"的每一圈正方形矩阵 的 边长

qq_39707352的博客 281

以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中

import java.util.Scanner;       /**   * 从键盘输入一个整数(1~20)  则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:  输入数字2,则程序输出:  1 2  4 3  输入数字3,则程序输出:  1 2 3  8 9 4  7 6 5  输入数字4, 则程序输出:  1  2   3  

yangxuanjuncom的专栏 3275
上一篇: 蓝桥杯 ADV-98 算法提高 约数个数 (java)
下一篇: 2017第八届蓝桥杯 04 取数位(java)
mainn
博客等级 码龄10年 865粉丝 447原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值