当前位置: 代码迷 >> J2SE >> 大婶帮小弟我解答一下
  详细解决方案

大婶帮小弟我解答一下

热度:16   发布时间:2016-04-23 20:24:30.0
大婶帮我解答一下

如图所示  ,用户输入一个奇数,进行上图排列 
------解决方案--------------------
import com.example.xom.Test;

public class NumberPro {
public static void main(String[] args) {
int N = 3;
int[][] testArray = new int[N][N];
int value = 1;
int H = N / 2; //定义水平坐标
int V = N / 2; //定义垂直坐标 
testArray[H][V] = value; //初始化第一个值
int flag = N * N;
// 定义四个方向变量,代表上下左右四个方向
// 规律:右--> 下 --> 左 --> 上
// 1,1,2,2,3,3,4,4,5,5 ……
// 也就是说,从右开始,依次是
// 右 下 
// 左 左 上 上 
// 右 右 右 下 下 下
// ……
int count = 1;
int Step = 1;
boolean Right = true;
boolean Down = false;
boolean Left = false;
boolean Up = false;
while(flag > value){
if(Right){
Step--;
V++;
testArray[H][V] = ++value;
if(0 == Step){
Right = false;
Down = true;
Step = count;
}
}else if(Down){
H++;
Step--;
testArray[H][V] = ++value;
if(0 == Step){
count++;
Down = false;
Left = true;
Step = count;
}

}else if(Left){
V--;
Step--;
testArray[H][V] = ++value;
if(0 == Step){
Left = false;
Up = true;
Step = count;
}

}else if(Up){
H--;
Step--;
testArray[H][V] = ++value;
if(0 == Step){
count++;
Up = false;
Right = true;
Step = count;
}
}
}


// Print Array
for(int i = 0; i < N; i++){
System.out.println();
for(int j = 0; j < N;j++){
System.out.print(testArray[i][j] + "    ");
}
}

}

}



LZ,你真不地道,这么难的题,你给这么一点分

我随便做一道OJ都有100+来分

基本注释了一下,留给你思考的机会
不懂再问我~
不过估计得下周才能回复,上班时间不上CSDN
  相关解决方案