文档章节

打印回型矩阵

西皇小明
 西皇小明
发布于 2016/04/03 22:19
字数 299
阅读 41
收藏 0
package circlenum;



/**
 * 
 * @author xcm
 *	腾讯的在线笔试题,输入一个矩(方)阵的大小n,输出其回型矩(方)阵,例如
 *  输入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 class CirCleNumber {
	public static void main(String[] args) {
		int n = 4;//需要改成标准输入System.in
		if (n == 1) {
			System.out.println(1);
			return;
		}
		int[][] data = new int[n][n];
		int i = 0, j = 0;
		int num = 1;
		int direction = 1;//方向
		int circle = 0;//第几圈,从0开始
		while (num <= n * n) {
			data[i][j] = num;
			num++;
			if (j < n - 1 && data[i][j + 1] == 0 && direction == 1) {
				j++;
				continue;
			} else {
				direction = 2;
			}

			if (i < n - 1 && data[i + 1][j] == 0 && direction == 2) {
				i++;
				continue;
			} else {
				direction = 3;
			}

			if (j > 0 && data[i][j - 1] == 0 && direction == 3) {
				j--;
				continue;
			} else {
				direction = 4;
			}

			if (i > 0 && data[i - 1][j] == 0 && direction == 4) {
				i--;
				continue;
			} else {
				circle++;
				i = circle;//到下一圈
				j = circle;//到下一圈
				direction = 1;
			}
		}
		print(data);
	}

	public static void print(int[][] data) {
		int n = data.length;
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				System.out.print(data[i][j] + "\t");
				if ((j + 1) % n == 0) {
					System.out.println();
				}
			}
		}
		System.out.println();
	}

}


© 著作权归作者所有

下一篇: java单例模式
西皇小明
粉丝 5
博文 40
码字总数 20601
作品 0
海淀
程序员
私信 提问
“之”字形打印矩阵-JAVA实现

题目描述: 给定一个矩阵matrix,按照“之”字形的方式打印这 个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 “之”字形打印的结果为:1,2,5,9,6,3,4,7,10,11,8,12 分析: 本体需要...

justlikeu777
2018/11/07
0
0
你见过最全的主成分分析PAC与梯度上升法总结

主成分分析一个非监督学习算法,主要用于数据降维,通过降维可以发现数据更容易理解的特征,其他作用也有可视化、降噪等。 假设现有样本的分布如图。 样本有两个特征,如果对样本进行降维,首...

Chuck_Hu
2018/06/01
0
0
Max/MSP/Jitter 官方教程翻译04 - 创建矩阵

Max/MSP/Jitter 教程 01 - 什么是矩阵? Max/MSP/Jitter 教程 02 - Jitter 对象的属性 Max/MSP/Jitter 教程 03 - 播放 QuickTime 视频 00 翻译自 Cycling74 的 Max/MSP/Jitter 官方文档:Tut...

Kidult
2018/08/26
0
0
回望

一、/输入一批考试分数,用-1作为结束标志,若输入大于100,则提示重新输入,并计算最高分,最低分,平均分/ #include int main() { int mark,n=0,sum=0,max=0,min=100; float ave; for(;;) ...

陌尘_9353
2018/01/06
0
0
现金奖励:挑战编程极限的问题

今天我想挑战一下OSCHINA的亲们的编程能力,出一道百度、谷歌不到答案的问题,第一个挑战成功的,直接奖励现金100元RMB(本人也是苦B码农,纯属意思一下)。 以前发过一条循环语句打印螺旋矩...

悠悠然然
2015/08/14
4.7K
67

没有更多内容

加载失败,请刷新页面

加载更多

oracle ORA-39700: database must be opened with UPGRADE option

ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option 进程 ID: 3650 会话 ID: 29......

Tank_shu
今天
1
0
分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
聊聊DubboDefaultPropertiesEnvironmentPostProcessor

序 本文主要研究一下DubboDefaultPropertiesEnvironmentPostProcessor DubboDefaultPropertiesEnvironmentPostProcessor dubbo-spring-boot-project-2.7.3/dubbo-spring-boot-compatible/au......

go4it
昨天
1
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部