package test;
import java.util.Scanner;
/**
* @author 熊浪
* @创建时间2016年9月26日
* @Email xiongl@sunline
* @此类的作用
*/
public class Test {
public static void main(String[] args) throws Exception {
Scanner sc=new Scanner(System.in);
System.out.println("请输入横轴数字");
int x=sc.nextInt();
System.out.println("请输入纵轴数字");
int y=sc.nextInt();
int[][] array = getClockWiseArray(x,y);
System.out.println("============顺时针回型阵===========");
for(int i=0,len=array.length;i<len;i++){
for(int j=0,lenths=array[i].length;j<lenths;j++){
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
array=getAntiClockWiseArray(x, y);
System.out.println("============逆时针回型阵===========");
for(int i=0,len=array.length;i<len;i++){
for(int j=0,lenths=array[i].length;j<lenths;j++){
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
}
/**
* 获取xInt * yInt逆时针回形矩阵数组
* @param xInt,矩阵x轴大小
* @param yInt,矩阵y轴大小
* @return
*/
public static int[][] getAntiClockWiseArray(int xInt, int yInt){
int xMax = xInt;
int yMax = yInt;
int array[][]=new int[yMax][xMax];
int x = 0, y = 0;
int xMin = 0, yMin = 0;
int size = xMax * yMax;
boolean flag = true;
for(int i=0;i<size;i++){
array[y][x] = i+1; //获取第一个数
if((y+1)<yMax && flag){
y++; //获取横坐标为0,纵坐标递增[[1,,,,][2,,,,][3,,,,][4,,,,][5,,,,]],横坐标为1,纵坐标递增
}else if((x+1)<xMax && flag){
x++; //获取纵坐标为5,横坐标递增数组变为 [[1,,,,][2,,,,][3,,,,][4,,,,][5,6,7,8,9]]
}else {
if(y>yMin){
y--; //获取横坐标为5纵坐标递减数组变为 [[1,,,,13][2,,,,12][3,,,,11][4,,,,10][5,,,10,9]]
}else if(x>(xMin+1)){
x--; //获取纵坐标为0,横坐标递减,数组 [[1,16,15,14,13][2,,,,12][3,,,,11][4,,,,10][5,,,10,9]]
}else{
xMax--;
yMax--;
xMin++; //数组的横纵轴减小1,横纵轴最小值加1,减去4方的,循环的次数减小y次,继续执行。
yMin++;
y++;
flag = true;
}
}
if((y+1) == yMax && (x+1) == xMax){
flag = false;
}
}
return array;
}
/**
* 获取xInt * yInt顺时针回形矩阵数组表示先添加的是横轴
* @param xInt,矩阵x轴大小
* @param yInt,矩阵y轴大小
* @return
*/
public static int[][] getClockWiseArray(int xInt, int yInt){
int xMax = xInt;
int yMax = yInt;
int array[][]=new int[yMax][xMax];
int x = 0, y = 0;
int xMin = 0, yMin = 0;
int size = xMax * yMax;
boolean flag = true;
for(int i=0;i<size;i++){
array[x][y] = i+1; //
if((y+1)<yMax && flag){
y++;
}else if((x+1)<xMax && flag){
x++;
}else {
if(y>yMin){
y--;
}else if(x>(xMin+1)){
x--;
}else{
xMax--;
yMax--;
xMin++;
yMin++;
y++;
flag = true;
}
}
if((y+1) == yMax && (x+1) == xMax){
flag = false;
}
}
return array;
}
}
import java.util.Scanner;
/**
* @author 熊浪
* @创建时间2016年9月26日
* @Email xiongl@sunline
* @此类的作用
*/
public class Test {
public static void main(String[] args) throws Exception {
Scanner sc=new Scanner(System.in);
System.out.println("请输入横轴数字");
int x=sc.nextInt();
System.out.println("请输入纵轴数字");
int y=sc.nextInt();
int[][] array = getClockWiseArray(x,y);
System.out.println("============顺时针回型阵===========");
for(int i=0,len=array.length;i<len;i++){
for(int j=0,lenths=array[i].length;j<lenths;j++){
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
array=getAntiClockWiseArray(x, y);
System.out.println("============逆时针回型阵===========");
for(int i=0,len=array.length;i<len;i++){
for(int j=0,lenths=array[i].length;j<lenths;j++){
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
}
/**
* 获取xInt * yInt逆时针回形矩阵数组
* @param xInt,矩阵x轴大小
* @param yInt,矩阵y轴大小
* @return
*/
public static int[][] getAntiClockWiseArray(int xInt, int yInt){
int xMax = xInt;
int yMax = yInt;
int array[][]=new int[yMax][xMax];
int x = 0, y = 0;
int xMin = 0, yMin = 0;
int size = xMax * yMax;
boolean flag = true;
for(int i=0;i<size;i++){
array[y][x] = i+1; //获取第一个数
if((y+1)<yMax && flag){
y++; //获取横坐标为0,纵坐标递增[[1,,,,][2,,,,][3,,,,][4,,,,][5,,,,]],横坐标为1,纵坐标递增
}else if((x+1)<xMax && flag){
x++; //获取纵坐标为5,横坐标递增数组变为 [[1,,,,][2,,,,][3,,,,][4,,,,][5,6,7,8,9]]
}else {
if(y>yMin){
y--; //获取横坐标为5纵坐标递减数组变为 [[1,,,,13][2,,,,12][3,,,,11][4,,,,10][5,,,10,9]]
}else if(x>(xMin+1)){
x--; //获取纵坐标为0,横坐标递减,数组 [[1,16,15,14,13][2,,,,12][3,,,,11][4,,,,10][5,,,10,9]]
}else{
xMax--;
yMax--;
xMin++; //数组的横纵轴减小1,横纵轴最小值加1,减去4方的,循环的次数减小y次,继续执行。
yMin++;
y++;
flag = true;
}
}
if((y+1) == yMax && (x+1) == xMax){
flag = false;
}
}
return array;
}
/**
* 获取xInt * yInt顺时针回形矩阵数组表示先添加的是横轴
* @param xInt,矩阵x轴大小
* @param yInt,矩阵y轴大小
* @return
*/
public static int[][] getClockWiseArray(int xInt, int yInt){
int xMax = xInt;
int yMax = yInt;
int array[][]=new int[yMax][xMax];
int x = 0, y = 0;
int xMin = 0, yMin = 0;
int size = xMax * yMax;
boolean flag = true;
for(int i=0;i<size;i++){
array[x][y] = i+1; //
if((y+1)<yMax && flag){
y++;
}else if((x+1)<xMax && flag){
x++;
}else {
if(y>yMin){
y--;
}else if(x>(xMin+1)){
x--;
}else{
xMax--;
yMax--;
xMin++;
yMin++;
y++;
flag = true;
}
}
if((y+1) == yMax && (x+1) == xMax){
flag = false;
}
}
return array;
}
}