您的位置:首页 > 编程语言 > Java开发

Z字形编排问题

2016-05-13 13:24 453 查看
  上个月的某次CSDN线上活动,左飞老师结缘了我一本《算法之美——隐匿在数据结构背后的原理(C++版)》,我决定把这本大作里的22个经典问题都用Java重写一遍,于是有了本系列博客。尽管用Java重写《算法之美》对Android学习直接帮助不大,但对基本功提升很大,会有长远效果。本系列博客以代码为主,讲解为辅。讲解只涉及Java与C++的不同之处(指针和C++的自带工具类),算法以《算法之美》为准。

  “Z字形编排问题”的Java重写思路:该问题涉及的主要知识点为二维数组,这个知识点Java和C++几乎没有不同之处,我要说的和《算法之美》一样。

  “Z字形编排问题”的Java重写代码:

<span style="font-size:18px;">public class ZMatrix {
public static void main(String[] args) {
System.out.println("Hello Mr.Zuo!");//向左老师致敬

final int SIZE = 8;//SIZE可以为任意偶数

int[][] matrix = new int[SIZE][SIZE];
int[][] a = new int[SIZE][SIZE];

System.out.println("原始矩阵如下:");
int p = 0;
for(int i = 0;i < SIZE ; i++){
String str = "";
for(int j = 0;j < SIZE ; j++){
matrix[i][j]=p;
str += ( (matrix[i][j]<10?("0"+matrix[i][j]):matrix[i][j]) + " ");
p++;
}
System.out.println(str);
}

System.out.println("经过Z字型编排后的矩阵如下:");
int i=0,j=0;
for(int x = 0; x < SIZE ;x++){
for(int y =0; y < SIZE ;y++){
a[i][j] = matrix[x][y];

if((i == SIZE-1 || i==0) && j%2==0 ){
j++;
continue;
}

if((j == 0 || j == SIZE - 1) && i%2==1 ){
i++;
continue;
}

if((i+j)%2 == 0){
i--;
j++;
}else if((i+j)%2 == 1){
i++;
j--;
}
}
}

for(int x = 0;x < SIZE ; x++){
String str = "";
for(int y = 0;y < SIZE ; y++){
str += ( (a[x][y]<10?("0"+a[x][y]):a[x][y]) + " ");
}
System.out.println(str);
}

}
}</span>


  “Z字形编排问题”的Java重写运行结果:



  最后吐槽一下遇到的几个困难:Android Studio不能编译J2SE Project,而且eclipse没有代码自动补全功能(换句话说就是不能用“首字母+Enter”),最可恨的是习惯用Log我又要用Android不建议的但是Java自带的System.out.println("CSDN");把文字输出到控制台上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 算法