求螺旋矩阵的最佳算法
求螺旋矩阵的最佳算法,这里指的最佳算法是相对复杂度而言的,
各位可以把好的解题思想留下。
以下是我写的:
import java.io.*;
class ScrewMatrix
{
public static void main(String[] args)
{
int width=10; int height=9; //初始化矩阵的行和列,可改变
int r=width*height+1;
int w=width; int h=height-1;
int n=0; int g=0;
int p=h-1; int m=width;
int count=1; int f=0;
int []arr=new int[r-1];
while(true)
{
for(int i=0;(i<w)&&(count!=r);++i,++count)
arr[width*n+i+(width-m)-f]=count;
for(int i=0;(i<h)&&(count!=r);++i,++count)
arr[width*(height-p+i)-g-1]=count;
for(int i=0;(i<(w-1))&&(count!=r);++i,++count)
arr[width*(h+g+1)-g-1-i-1]=count;
for(int i=0;(i<(h-1))&&(count!=r);++i,++count)
arr[width*(p-i)+g+1-1]=count;
if(count==r)
break;
--p; m-=2; ++n; ++g; h-=2; w-=2; ++f;
}
for(int i=0;i<arr.length;++i)
{
if(i%(width)==0)
System.out.println();
System.out.print(" "+arr[i]+'\t');
}
System.out.println();
}
}
感觉做的有些‘笨’,就是改变数组的坐标值来存储count