蛇形矩阵Java实现
2016-04-03 21:39
260 查看
蛇形矩阵Java实现
腾讯在线笔试题中的一道编程题,题意是输入N,构造一个N*N的蛇形矩阵。例如输入3,则矩阵的输出形式应该是
123
894
765
我的想法是初始化四个边界参数,分别是上下左右,上和左初始值为0,右和下的初始值为n-1。
内部有四个循环,分别是是从左到右赋值,从上到下赋值,从右到左赋值,从下到上赋值,执行完这四次循环后,四个边界参数收缩。这四个循环的执行次数总共不超过n*n次,故外层再套一个大循环。下面是代码:
import java.util.Scanner; /** * * @author John */ public class SneakMatrix { private void handle() { Scanner scan = new Scanner(System.in); int n =scan.nextInt(); //len为矩阵元素个数 int len=n*n; int[][] a=new int ; int count=1; //设立四个边界,上下左右,顺时针循环一次后,边界就缩小 int l=0,t=0,r=n-1,b=n-1,i,j; while(len>0) { //从左到右 for(i=t,j=l;j<=r;j++) { a[i][j]=count++; len--; } //从上到下 for(--j,++i;i<=b;i++) { a[i][j]=count++; len--; } //从右到左 for(--i,--j;j>=l;j--) { a[i][j]=count++; len--; } //从下到上,这里的t参数要提前改变,否则就会重复访问到上边界的值,比如第一次时会访问到a[0][0] t++; for(++j,--i;i>=t;i--) { a[i][j]=count++; len--; } l++;r--;b--; } for(i=0;i<n;i++) { for(j=0;j<n;j++) { System.out.print(a[i][j]); } System.out.println(""); } } public static void main(String[] args) { new SneakMatrix().handle(); } }
输出结果为:
相关文章推荐
- Java - Socket
- Java对象序列化
- Java的switch语句
- java遍历全盘文件时出现空指针异常
- JAVA命名、注释规范
- Semaphore(Java 信号量)
- Java集合类操作优化经验总结
- 20145314郑凯杰 《Java程序设计》第5周学习总结
- 【笔记】 《js权威指南》- 第9章 类和模块 - 9.3 Java式继承
- java中Int与String的相互转化方法
- Java版AI五子棋
- java程序的加载过程
- java静态代理与动态代理
- java第5章学习总结
- java的注解技术介绍
- 【java集合框架源码剖析系列】java源码剖析之ArrayList
- 【java集合框架源码剖析系列】java源码剖析之ArrayList
- Java Web应用中调优线程池的重要性
- java描述链表基本操作
- [置顶] 深入理解JVM之一:Java内存结构