输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
则依次打印出数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10。
代码:
package offer;
public class ti29 {
public static void PrintMatrixClockwise(int nums[][])
{
if(nums[0].length==0)
{
return;
}
int start = 0;
while(nums.length>start*2&&nums[0].length>start*2)
{
PrintMatrix(nums,start);
++start;
}
}
public static void PrintMatrix(int nums[][],int start)
{
for(int i=start;i<nums[start].length-start;i++)
{
System.out.print(nums[start][i]+" ");
}
for(int i=start+1;i<nums.length-start;i++)
{
System.out.print(nums[i][nums[start].length-start-1]+" ");
}
for(int i=nums[start].length-start-2;i<nums[start].length&&i>=start;i--)
{
System.out.print(nums[nums.length-start-1][i]+" ");
}
for(int i=nums.length-start-2;i<nums.length&&i>=start+1;i--)
{
System.out.print(nums[i][start]+" ");
}
System.out.println();
}
public static void main(String[] args)
{
int nums[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
PrintMatrixClockwise(nums);
}
}