博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。...
阅读量:6225 次
发布时间:2019-06-21

本文共 1303 字,大约阅读时间需要 4 分钟。

/* *	从键盘输入一个整数(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*/import java.util.Scanner;public class Demo08 {	public static void show(int[][] m) {		for(int[] x:m){			for(int y:x){				System.out.print(y+"\t");			}			System.out.println("");		}	}	// 顺时针螺旋	public static int[][] helix(int n) {		int[][] m = new int[n][n];	// 产生空矩阵		int t = n*n;	// 填充矩阵从1到n*n个数		int i = 0;		// 填充数字的位置(行下标) 		int j = 0;		// 填充数字的位置(列下标) 		int start = 0;	// 每填充一圈时用的边界(左上)		int end = n;	// 每填充一圈时用的边界(右下)		int x = 0;		// 填充左侧一竖列数字时用的起始位置(行下标)		int y = 0;		// 填充左侧一竖列数字时用的起始位置(列下标)		int count = 0;	// 标记那段程序执行,那段程序不执行		for(int s=1;s<=t;s++){			if(i==start&&j
start&&i
start){ if(i==end-1){ // 到下边界了 m[i][j--] = s; // 填充下边界 }else{ m[i][j] = s; // 填充右侧一竖列数字 } }else if(count==0){ // 只当count==0 时执行一次 m[i][j] = s; // 填充到了左下角的元素 i--; // 开始从下向上填充左侧元素(行坐标上移) x = i; // 用新的下标x来填充左侧 (行下标) y = j; // 用新的下标y来填充左侧 (列下标) count++; }else if(x>start&&y

运行结果:

输入一个整数:41	2	3	4	12	13	14	5	11	16	15	6	10	9	8	7

自己写的,用到的控制变量比较多,所以程序读起来容易混乱!

整体思路: (外圈实现: 

1. 从(左->右)填充第一行

 2.从(上->下)填充右侧一列

 3.从(右->左)填充最后一行 

4.从(下->上)填充左侧一列

只要最外圈能做出来,内圈同理,调整变量就可以了)

 

转载地址:http://axuna.baihongyu.com/

你可能感兴趣的文章
《UX最佳实践:提高用户体验影响力的艺术 》一3.3 工作流程中各个角色的密切配合使用户体验达到更好效果...
查看>>
西数打造面向数据中心的Gold产品组合
查看>>
俄公司将为“物联网”部署约200颗卫星
查看>>
《大数据原理:复杂信息的准备、共享和分析》一一2.8 去标识化
查看>>
SAP 助力医疗器械中小企业营业增收30%
查看>>
如何规划基于Docker的微服务?
查看>>
ICLR 2017开幕前夕,雷锋网来到土伦带你实地探营 | ICLR 2017
查看>>
从物联网到智能制造 行业巨擘联合抢占先机!
查看>>
最高检推动检察业务大数据实践深入发展
查看>>
热门拍照应用Prisma前途未卜:融资还是被收购?
查看>>
Vestas 利用IBM大数据提升风电运营
查看>>
5G时代,中国将彻底终结美国霸权!wifi和互联网也面临消失!
查看>>
人工智能技术将助力改善移动安全
查看>>
WPS Office Linux版本一年未更新:已中止开发
查看>>
云计算性能常见问题:云计算何处何从?
查看>>
优秀OA系统的五大特性
查看>>
线路愈加明晰?万达牵手IBM进军公有云业务
查看>>
【转】Zookeeper-Watcher机制与异步调用原理
查看>>
纽约州推出“被遗忘权”提案 用户或能要求将个人隐私信息从搜索结果中移
查看>>
降低测试难度及成本 加速物联网普及
查看>>