日期:2014-05-20  浏览次数:20686 次

求一个java程序
输入两个整数m,n,输出m*n的逆时针形式的螺旋矩阵,如2 3
  1 6 5
  2 3 4
 

------解决方案--------------------
import java.util.*;

public class AnySpinMatrixTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s=new Scanner(System.in);
System.out.println("请输入两个正整数:");
int original_row=s.nextInt();
int original_col=s.nextInt();
int row=original_row;
int col=original_col;
int Array[][]=new int[row][col];
int count=0;//控制阵脚条件。
int i=0;
int j=0;
int m=1;
int status=1;
while(m<=original_row*original_col)
{
Array[i][j]=m;
count++;
m++;
switch(status)//分上(1)、下(2)、左(3)、右(4)四种情况。
{
case 1:
if(count==row)
{
col--;
status=2;
j++;
count=0;
}
else
i++;
break;
case 2:
if(count==col)
{
row--;
status=3;
i--;
count=0;
}
else
j++;
break;
case 3:
if(count==row)
{
col--;
status=4;
j--;
count=0;
}
else
i--;
break;
case 4:
if(count==col)
{
row--;
status=1;
i++;
count=0;

}
else
j--;
break;
}
}
System.out.println(original_row+"*"+original_col+"螺旋阵为:");
for(i=0;i<original_row;i++){
for(j=0;j<original_col;j++){
System.out.print(Array[i][j]+"\t");
}
System.out.println();
}
}

}