Z字形编排问题
2016-05-13 13:24
453 查看
上个月的某次CSDN线上活动,左飞老师结缘了我一本《算法之美——隐匿在数据结构背后的原理(C++版)》,我决定把这本大作里的22个经典问题都用Java重写一遍,于是有了本系列博客。尽管用Java重写《算法之美》对Android学习直接帮助不大,但对基本功提升很大,会有长远效果。本系列博客以代码为主,讲解为辅。讲解只涉及Java与C++的不同之处(指针和C++的自带工具类),算法以《算法之美》为准。
“Z字形编排问题”的Java重写思路:该问题涉及的主要知识点为二维数组,这个知识点Java和C++几乎没有不同之处,我要说的和《算法之美》一样。
“Z字形编排问题”的Java重写代码:
“Z字形编排问题”的Java重写运行结果:
最后吐槽一下遇到的几个困难:Android Studio不能编译J2SE Project,而且eclipse没有代码自动补全功能(换句话说就是不能用“首字母+Enter”),最可恨的是习惯用Log我又要用Android不建议的但是Java自带的System.out.println("CSDN");把文字输出到控制台上。
“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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树