程序员的算法趣题:Q21 异或运算三角形(Java版)

该博客介绍了如何使用Java实现一个算法趣题,即通过异或运算构建类似帕斯卡三角形的结构,并寻找自上而下第2014个0所在的位置。博主详细阐述了问题的思路,包括将每一行视为一维数组,从第三行开始每一行由上一行生成,然后不断生成新数组并计数0的个数,最后展示了解决问题的代码和结果。
摘要由CSDN通过智能技术生成

题目说明

著名的“帕斯卡三角形”的计算法则是“某个数值是其左上角的数和右上角的数之和”。
这里我们用异或运算代替单纯的和运算,从第一层开始计算,最终可以得到如图所示的三角形。
Q21异或运算三角形
求:自上而下计算时,第 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];    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值