第一种解法:
package com.zhm;/** * Created by zhm on 2015/6/27. * 1 2 3 * 4 5 6 * 7 8 9 * 上面的矩阵按照顺时针输出:1,2,3,6,9,8,7,4,5 * 递归+起止判断实现。 */public class JuzhenPrint { /** * 初始化数组矩阵 * @param length * @return */ public int[][] initJuzheng(int length){ int[][] result = new int[length][length]; for(int i=0;i<10){ tmp = (int)(Math.random()*100); } result[j][i]=tmp; System.out.print(result[j][i] + " "); } System.out.println(" "); } return result; } /** * 顺时针输出矩阵 * @param num * @param start * @param end */ public void output(int[][] num,int start,int end){ if(start>end || end<=0)return; for(int i=start;i<=end;i++){ System.out.print(num[i][start] + ","); } for(int i=start+1;i<=end;i++){ System.out.print(num[end][i] +","); } for(int i=end-1;i>=start;i--){ System.out.print(num[i][end]+","); } for(int i=end-1;i>start;i--){ System.out.print(num[start][i]+","); } output(num,start+1,end-1); } public static void main(String[] args) { JuzhenPrint jz = new JuzhenPrint(); int[][] juzhen = jz.initJuzheng(3); jz.output(juzhen, 0, juzhen.length - 1); }}
结果:
61 11 40 26 47 22 76 44 24 61,11,40,22,24,44,76,26,47,
第二种解法:
package com.zhm;import java.util.ArrayList;import java.util.List;/** * Created by zhm on 2015/6/27. * 1 2 3 * 4 5 6 * 7 8 9 * 上面的矩阵按照顺时针输出:1,2,3,6,9,8,7,4,5 * 通过旋转矩阵+切分矩阵实现 */public class JuzhenRotation { /** * 初始化数组矩阵 * @param length * @return */ public int[][] initJuzheng(int length){ int[][] result = new int[length][length]; for(int i=0;i<10){ tmp = (int)(Math.random()*100); } result[j][i]=tmp; System.out.print(result[j][i] + " "); } System.out.println(" "); } return result; } private void printResult(int[][] juzhen) { List result = new ArrayList (); rotationAry(juzhen, result, 0); for (Integer data : result) { System.out.print(data + ","); } } /** * * @param juzhen * @param result * @param count 记录旋转次数,当count=4表示已经旋转了一圈。 */ private void rotationAry(int[][] juzhen,List result,int count) { //递归至矩阵无元素退出。偶数行*列矩阵 if(juzhen.length==0){ return; } for(int i=0;i
结果:
44 74 72 20 88 35 21 25 73 44,74,72,35,73,25,21,20,88,
两种方法应该是第一种效率高,第二种给人感觉好理解一些,完全顺着题目的意思解答的。