二维数组螺旋输出例如:输入数组12345678910111213141516输出数组12341213145111615610987Java实现
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
ArrClass.java/*** 二维数组的元素进行螺旋排列,二维数组是有序的,输出螺旋排序* @author zdd*/public class ArrClass {private int l, r, u, d; //左右上下private int n, m; //行列private int i, j; //当前走到的位置;private int[][]arr;//结果集private enum Direction {//枚举right, down, left, up;}private Direction pos;private void init(int n, int m) {this.n = n;this.m = m;this.l = -1; //左边界this.r = m; //右边界this.u = 0; //上边界this.d = n; //下边界this.i = 0;this.j = 0;this.arr = new int[n][m];this.pos = Direction.right;//初始向右走}/*** 处理,螺旋排序* @param arr 二维数组,每行的列数必须相同;* @param n 参数arr的行数* @param m 参数arr的列数*/public void deal(Integer [][] arr, int n, int m) {this.init(n, m);for (int i = 0; i < n; i) {for (int j = 0; j < m; j) {int d = arr[i][j];boolean flag = push(d);while(!flag) {flag = push(d);}}}}private boolean push(int data) {if(pos == Direction.right) { //向右if(j < r) {arr[i][j] = data;j;return true;} else {j--;i;r--;pos = Direction.down;return false;}} else if(pos == Direction.down) { //向下if(i < d) {arr[i][j] = data;i;return true;} else {i--;j--;d--;pos = Direction.left;return false;}} else if(pos == Direction.left) { //向左if(j > l) {arr[i][j] = data;j--;return true;} else {j;i--;l;pos = Direction.up;return false;}} else { //向上if(i > u) {arr[i][j] = data;i--;return true;} else {i;j;u;pos = Direction.right;return false;}}}/*** 矩阵形式输出,空格分割开;*/public void print() {for (int i = 0; i < n; i) {for (int j = 0; j < m; j) {System.out.print(arr[i][j]);if(j < m - 1) {System.out.print(" ");}}if(i < n - 1) {System.out.println();}}}/*** get方法,获取结果集;* @return arr 处理后的二维数组;*/public int[][] getArr() {return arr;}}//二维数组的元素进行螺旋排列,二维数组是有序的,螺旋排序如
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
所示//输入:将从一个整形 T 开始,表示后续有 T 个实例。//每个实例第一行的两个整数 N M表示二维数组行列数,//表示有N行数每行M个数构成数组,数组都是已经排序好的(排序数组)。//输出:打印出螺旋排序后的数组////样例输入://1//4 4//1 2 3 4//5 6 7 8//9 10 11 12//13 14 15 16//样例输出://1 2 3 4//12 13 14 5//11 16 15 6//10 9 8 7测试用例:Main.javaimport java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();int t = 0;ArrClass ac = new ArrClass();while (t < num) {Integer n = scanner.nextInt();Integer m = scanner.nextInt();Integer [][]arr = new Integer[n][m];for (int i = 0; i < n; i) {for (int j = 0; j < m; j) {arr[i][j] = scanner.nextInt();}}ac.deal(arr, n, m);ac.print();t;if(t < num) {System.out.println();}}}/*2441234567891011121314151643123456789101112*/}