面试技巧平面图形题

来源:互联网 发布:高仿永硕网盘源码 编辑:程序博客网 时间:2024/05/05 15:50
public class OrderNum {
/** * 面试题:要求输出            *   3   7 *  2 4 6 8 * 1   5   9 * 像这种类型题称为平面图形题,这种类型的题都可以用一个二维数组来存放,然后通过找规律来控制打印输出 */public static void main(String[] args) {// 先定义一个二维数组存放所有数据int arr[][] = new int[3][9];int x = 2;int y = 0;boolean flag = true;for (int i = 1; i <= 9; i++) {arr[x][y] = i;y++;if (flag) {x--;}if (!flag) {x++;}if (x < 0) {x = x + 2; // 把x置为1flag = false;}if (x > 2) {x = x - 2; // 把x置为1flag = true;}}// 在把二维数组输出,无数字的地方填空格for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {if (arr[i][j] == 0) {System.out.print(" ");} else {System.out.print(arr[i][j]);}}System.out.println(); // 换行}}}

分析:

public class OederNum02 {/** * 把程序做到通用性,可以看出,二维数组的行数为[9/4+1],列数为number */public static void main(String[] args) {// 先定义一个二维数组存放所有数据int num=54;int heigth=num/4+1;int weigth=num;int arr[][] = new int[heigth][weigth];int x = heigth-1;int y = 0;boolean flag = true;for (int i = 1; i <= num; i++) {arr[x][y] = i;y++;if (flag) {x--;}if (!flag) {x++;}if (x < 0) {x = x + 2; // 把x置为1flag = false;}if (x > heigth-1) {x = x - 2; // 把x置为1flag = true;}}// 在把二维数组输出,无数字的地方填空格for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {if (arr[i][j] == 0) {  if(num<10){  //控制输出的空格数System.out.print(" ");}if(num>10){System.out.print("  ");}} else {System.out.print(arr[i][j]);}}System.out.println(); // 换行}}}



原创粉丝点击