1、求最大连续bit数 /** * 求最大连续bit数 * 求整数二进制连续1的个数 */ import java.util.Scanner; public class Test1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()){ int n = Integer.parseInt(in.nextLine()); String s = Integer.toBinaryString(n); char[] arr = s.toCharArray(); int sum = 0; int max = 0; for (int i = 0; i < arr.length; i++) { if(arr[i]=='1'){ sum+=1; }else{ max=Math.max(sum,max); sum=0; } } max=Math.max(sum,max); System.out.println(max); } } }
2、走方格的方案数 /** * 走方格的方案数 * 请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角 * 总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走? * 用递归来做,将右下角看做原点(0, 0),左上角看做坐标(m, n),下图所示: * 从(m, n)—>(0, 0)就分两步走: * 往右走一步:f(m, n - 1)—>(0, 0) 加上下走一步:f(m - 1, n)—>(0, 0) * 每一种m,n的方块,就相当于m-1,n 和m,n-1的方块两种方案加起来 */ import java.util.Scanner; public class Test2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextInt()) { int m = sc.nextInt(); int n = sc.nextInt(); System.out.println(cal(m,n)); } } private static int cal(int m,int n){