回行矩阵代码
public class C1_4 {
staticenum Direction{
Right,Left,Up,Down
}
staticint length=8;
staticint [][] snake=new int[length][length];
static Direction lastDirection=Direction.Right;
staticint value=1;
static void initialArray(){
int row=0,col=0;
for(int c=0;c<length*length;c++){
snake[row][col]=value;
lastDirection=findDirection(row,col);
switch(lastDirection){
case Right:
col++;
break;
case Left:
col--;
break;
case Up:
row--;
break;
case Down:
row++;
break;
default:
System.out.println("error");
}
value++;
}
}
static Direction findDirection(int row,int col){
Direction direction=lastDirection;
switch(direction){
case Right:
if((col==length-1)||(snake[row][col+1]!=0)){
direction=direction.Down;
}
break;
case Left:
if((col==0)||(snake[row][col-1]!=0)){
direction=direction.Up;
}
break;
case Down:
if((row==length-1)||(snake[row-1][col]!=0)){
direction=direction.Left;
}
break;
case Up:
if((snake[row-1][col]!=0)){
direction=direction.Right;
}
break;
}
return direction;
}
static void print(int[][] arr){
for(int i=1;i<length;i++){
for(int j=1;j<length;j++){
System.out.printf("%2d",arr[i][j]);
}
System.out.println();
}
}
public static void main (String[] args){
initialArray();
print(snake);
}
}
public class C1_4 {
staticenum Direction{
Right,Left,Up,Down
}
staticint length=8;
staticint [][] snake=new int[length][length];
static Direction lastDirection=Direction.Right;
staticint value=1;
static void initialArray(){
int row=0,col=0;
for(int c=0;c<length*length;c++){
snake[row][col]=value;
lastDirection=findDirection(row,col);
switch(lastDirection){
case Right:
col++;
break;
case Left:
col--;
break;
case Up:
row--;
break;
case Down:
row++;
break;
default:
System.out.println("error");
}
value++;
}
}
static Direction findDirection(int row,int col){
Direction direction=lastDirection;
switch(direction){
case Right:
if((col==length-1)||(snake[row][col+1]!=0)){
direction=direction.Down;
}
break;
case Left:
if((col==0)||(snake[row][col-1]!=0)){
direction=direction.Up;
}
break;
case Down:
if((row==length-1)||(snake[row-1][col]!=0)){
direction=direction.Left;
}
break;
case Up:
if((snake[row-1][col]!=0)){
direction=direction.Right;
}
break;
}
return direction;
}
static void print(int[][] arr){
for(int i=1;i<length;i++){
for(int j=1;j<length;j++){
System.out.printf("%2d",arr[i][j]);
}
System.out.println();
}
}
public static void main (String[] args){
initialArray();
print(snake);
}
}









