大婶帮我解答一下

紫菱天宇 2014-08-10 11:19:55

如图所示 ,用户输入一个奇数,进行上图排列
...全文
168 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫菱天宇 2014-08-11
  • 打赏
  • 举报
回复
谢谢 我去看代码了
俺是小王子 2014-08-10
  • 打赏
  • 举报
回复
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
百曉生 2014-08-10
  • 打赏
  • 举报
回复
不是大婶,也不是大神,你想让解答什么?

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧