蛇形矩阵 java实现
2016-04-03 23:02
381 查看
一道面试题,直接上代码和运行结果:
运行结果裁图:
<span style="font-size:14px;">/* *Created on 2016年4月3日 *Copyright 2016 Yong Cai Limited crop. All Rights Reserved * *7289***0@qq.com */ package org.cy.com; import java.util.Scanner; public class SheXingJuZhen { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println("n = " + n); printMatrix(compute(n), n); } private static int[][] compute(int n){ int[][] res = new int ; int start = 0; int end = n * n; int rightStartRow = 0; int downEndCol = n - 1; int leftStartRow = n-1; int upEndCol = 0; while(end != start){ //System.out.println("start:" + start); //向右,操作行 for(int i = upEndCol; i < n;i++){ if(res[rightStartRow][i] == 0){ start ++; res[rightStartRow][i] = start; } } rightStartRow ++; //向下,操作列 for(int i = rightStartRow;i < n;i++){ if(res[i][downEndCol] == 0){ start ++; res[i][downEndCol] = start; } } downEndCol--; //向左,操作行 for(int i = downEndCol;i >= 0;i--){ if(res[leftStartRow][i] == 0){ start ++; res[leftStartRow][i] = start; } } leftStartRow --; //向上,操作列 for(int i = leftStartRow;i >= 0;i--){ if(res[i][upEndCol] == 0){ start ++; res[i][upEndCol] = start; } } upEndCol ++; } return res; } private static void printMatrix(int[][] res,int n){ int max = n * n; int len = String.valueOf(max).length(); for(int i=0;i < n;i++){ for(int j=0;j < n;j++){ if(String.valueOf(res[i][j]).length() == len){ System.out.print(res[i][j] + " "); }else{ int sub = len - String.valueOf(res[i][j]).length(); String kk = ""; for(int m=0; m < sub;m++){ kk += " "; } System.out.print(kk + res[i][j] + " "); } } System.out.println(); } } } </span>
运行结果裁图:
相关文章推荐
- JavaSE学习笔记(2016.4.3)
- 第七章 springboot + retrofit
- 在Eclipse中导入项目的一般方法
- 关于java中==操作和.equals()函数的有趣讨论
- Jvm以及Jvm性能参数优化
- Java并发:await/wait 与sleep、yield间的区别
- servlet api简介(一)
- Spring源码分析篇01——Resource
- java classLoader体系结构使用详解
- java虚拟机自动内存管理机制
- 20145204《Java程序设计》第5周学习总结
- 20145321 《Java程序设计》第5周学习总结
- Java并发机制之Volatile关键字
- 20145225《Java程序设计》 第5周学习总结
- Step by Step into Spring (AOP)
- jdk8——Stream API
- 【jdk1.8】PriorityQueue源码分析
- 20145109 《Java程序设计》第五周学习总结
- java多线程调用 单例类中一个的方法
- 20145201 《Java程序设计》第五周学习总结