【牛客刷题11】另类加法与走方格的方案数

题目一

1.题目

题目链接:另类加法

在这里插入图片描述

2.思路

通过位运算实现,具体实现如下:

  1. 二进制位异或运算相当于对应位相加,不考虑进位 比如: 1 ^ 1 = 0 —> 1 + 1 = 0 (当前位值
    为0,进一位) 1 ^ 0 = 1 —> 1 + 0 = 1 (当前位值为1) 0 ^ 0 = 0 —> 0 + 0 = 0 (当前位值为0)
  2. 二进制位与运算左移一位相当于对应位相加之后的进位 比如: 1 & 1 = 1 —> 1 + 1 = 0 (当前
    位的值进一位) 1 & 0 = 0 —> 1 + 0 = 1 (当前位的值不进位) 0 & 0 = 0 —> 0 + 0 = 0 (当前位的
    值不进位)
  3. 两个数相加:对应二进制位相加的结果 + 进位的结果 比如:3 + 2 --> 0011 + 0010 --> 0011
    ^ 0010 + ((0011 & 0010) << 1) —> (0011 ^ 0010) ^ ((0011 & 0010) << 1), 当进位之后的结
    果为0时,相加结束

3.代码实现


import java.util.*;

public class UnusualAdd {
    public int addAB(int A, int B) {
        if(B==0){
            return A;
        }
        int sum = 0;
        int carray = 0;
        while ( B!=0){
            sum = A^B;
            carray = (A&B)<<1;
            A = sum;
            B = carray;
        }
         return A ;
    }
   
}

题目二

1.题目

题目链接:走方格的方案数

在这里插入图片描述

2.思路

在这里插入图片描述

3.代码实现

import java.util.*;
public class Main{
    public static void main(String[]args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            int m = sc.nextInt();
            int ret = sum(n,m);
            System.out.println(ret);
        }
    }
    
    public static int sum(int n,int m){
        if((n == 1 && m >= 1)|| (m==1 && n >=1)){
            return n+m;
        }
        return sum(n-1,m) + sum(n,m-1);
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十叶知秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值