Java笔试题之计算题

Java笔试题之计算题

Java笔试题之计算题

1.8位有符号二进制数 11100101 代表的十进制数为:
答:最高位为1.即为负数。
先对其减一:11100100
再对其取反:00011011 27
结果为:-27
补充:如果最高位为0 ,按常规方式转换。

2. 用13的瓷砖密铺320的地板有几种方式?
答:利用动态规划的思想

3*n的区域铺瓷砖为f(n),如果最后一列竖着(占1m),那么就是f(n-1),如果横着铺(占3m),就是f(n-3)。
f(1) = 1 //当长度为1米的的方法数量
f(2) = 1
f(3) = 2
f(4) = f(3) + f(1) =3
f(5) = f(4) + f(2) =4
f(n) = f(n-1) + f(n-3)
……
f(20) = f(19) + f(17)=1278。 //当长度为20米的方法数量

补充 上楼梯的问题:
一次性只能上一步或者两步,走十步有几种走法
https://www.sohu.com/a/153858619_466939
可以根据最后一步分为2个部分
1.最后一次 走1步 f(9)
2.最后一次 走2步 f(8)

f(10)=f(9)+f(8)

f(n)=f(n-1)+f(n-2) -》转态转移方程

4. 用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要()长的二进制字符串?
A.12
B.14
C.18
D.24
利用霍夫曼最短路径:
在这里插入图片描述
二叉树如图所示,所以
a=1
b=01
c=000
d=001
编码不唯一。
14+22+31+31=14

5.一个金条31厘米,如果把它切成数段,使其中的一段或者几段能够接成长1到31任何整数的金条,请问至少 切几次?
A.4
B.5
C.6
D.7
31 =16+15
15=8+7
7=4+3
3=2+1
16、8、4、2、1 (5段切4次)

6.一个整数N,他可能等于比它小的若干个整数(大于2)相加。如果存在这样的连续整数,将他们输出,如果没有则不输出。
例: 整数18,18=5+6+7=3+4+5+6。所以输出[5 6 7],[3 4 5 6]。

public class test2 {
   
    public static void main(String args[]){
   
        long startTime = System.currentTimeMillis();//获取当前时间
        arithmetic_squence(9);
        long endTime = System.currentTimeMillis();//获取当前时间
        System.out.println("程序运行时间:"+(endTime-startTime)+"ms");
    }
    public static void arithmetic_squence(int n){
   
        int comma=0;
        //这样的连续数 2个-(n/2+1)个
        for(int i=2;i<=n/2+1;i++){
   //i表示该整数由i个连续整数相加
            int value=n/i-(i-1)/2;//当该整数由i个连续整数相加时,这些连续整数的最小值的表达式
                                  //减去是 表示中值的左侧 (i-1)/2 排除了奇偶性的影响
            if(value<1)//最小取1
                break;
                int temp=(value+value+i-1)*i/2;//等差数列,首相加末项乘以项数除以2
                if(temp==n){
   //成功找到连续整数
                  if(comma!=0)
                      System.out.print(",");
                 
                  System.out.print("[");
                 
                  for(int k=0;k<i;k++){
   
                      if(k!=0)
                          System.out.print(" ");
                      System.out.print(value+k);
                  }
                  System.out.print("]");
                    comma++;//记录有多少组连续整数组
            }  
        }
        System.out.println(comma);
    }
}

6.一个堆谷粒5个5个数剩余4粒,4个4个数剩余3粒,3个3个数剩余2粒,2个2个数剩余1粒,问这堆谷粒至少位多少?
答:根据题意:
n+1 可以被5、4、3、2 整除
n+1=543
n=59

在这里插入图片描述

本文来源蹊源的奇思妙想,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/14721

发表评论