题目说明
著名的“帕斯卡三角形”的计算法则是“某个数值是其左上角的数和右上角的数之和”。
这里我们用异或运算代替单纯的和运算,从第一层开始计算,最终可以得到如图所示的三角形。
求:自上而下计算时,第 2014 个 0 会出现在哪一层?
思路
1.每一行是一个一维数组
2.从第三行开始,每一行都由上一行生成
3.不断生成新的数组,计算0出现的个数
代码
public static void main(String[] args) {
int[] arr = {1,1}; // 第二层
int count = 0; // 0 出现的次数
// level 表示当前是第几个数组(第几层)
for(int level = 3; ; level ++){
int[] brr = new int[level]; // 第level层有level个元素
brr[0] = 1; // 第一列是1
brr[brr.length-1] = 1; // 最后一列是1
for (int i = 1; i < brr.length-1; i++) { // 其它元素等于左上方和正上方两个元素异或
brr[i] = arr[i-1] ^ arr[i];