一、在AndroidStudio下配置androidannotations
首先,准备好你的project。
AndroidStudio下的androidannotations配置是比较容易的,只需要配置两个build.gradle就可以。
砍树的人开始学造斧!
首先,准备好你的project。
AndroidStudio下的androidannotations配置是比较容易的,只需要配置两个build.gradle就可以。
问题描述: 国际象棋的“8皇后问题”:在8x8的国际象棋上摆放8个皇后,使其不能互相攻击,即8个皇后中任意两个不得处在同一行、同一列或同一对角线上。共有多少种符合条件的摆法?
解法与分析:
- 首先是不能同一列同一行,那么每个皇后必须各独占一行一列,使用二维数组来描述就有点浪费空间了。这里我们使用一个8个元素的一维数组来表示每个皇后的每一行。
- 那么独占一列的情况,描述起来就像是实现{0,1,2,3,4,5,6,7}这个一维数组的全排列。
- 最后要解决的是不能在同一对角线的判断:假设两个数载一维数组nums位置i,j,那么i,j在同一对角线的条件是 i-j = nums[i]-nums[j] || j-i = nums[i]-nums[j]。
问题描述: 输入后缀表达式,输出后缀表达式的二叉树。
解法与分析:
- 根据后缀表达式的特点,我们可以知道,只要是运算符的就都是根结点。
- 我们这里需要使用一个栈来保存字符。遍历后缀表达式,每当遇到是非运算符的字符,就将它入栈,当遇到是运算符,就将栈中前两个结点出栈,和运算符组成一棵子树,然后入栈。遍历完成后,栈中剩下的唯一的一个结点就是该后缀表达式的二叉树的根结点。
问题描述: 从上层向下层遍历,从左向右打印出一棵树 。
解法与分析: 广度遍历,按照从左向右的方式,我们可以使用队列来保存每一层的结点,每次结点出队,将出队结点的子结点入队,直至队列为空,就可以打印出符合要求的树遍历。