1.一个字符串A由n个a-z的小写字母组成,可以将其表示为byte A[n],请问还有没有更节省空间的表示方法?请说明原理及节省空间比例.2.一个人出30元买入一件商品以40元卖出,然后又以50元买入60元卖出,依此类推,请分析这样的商业企划是否盈利?3.请写一个插入队列.4.请实现Map接口的get()和put()方法.

解决方案 »

  1.   

    1。4bit保存一个值,最后优化了1/2的空间。2。对于一个商业计划,这个肯定不是赢利的。
    虽然每一笔都能赚10块,但是越到后面赢利和投入比越来越小。
    那么商业的目的是花越来越少的钱赚更多的钱。3。4。
      

  2.   

    一般认为5bit表示一个字母足够了 32>26 可以节省大约3/8
      

  3.   

    同意treeroot(旗鲁特) 第一提的意见,具体实现是怎样的?
      

  4.   

    一般认为5bit表示一个字母足够了 32>26 可以节省大约3/8简直胡扯!!!
      

  5.   

    这个问题涉及到压缩LZW压缩算法。
      

  6.   

    第二个问题,个人认为4bit是不行的,4位只能表示16个字符,不符合要求;如果用5bit表示字符,可表示32个字符,满足。计算机一般用8bit存储英文字母,这样就节省了3/8的空间。
      

  7.   

    1.如果这个字符串只用一次,那完全没有必要去对它的表示进行优化,不值得.如果这种字符串创建非常频繁,而且是在内存较少如嵌入式设备上,可以考虑采用Flyweight模式.
    2.当然盈利.不要想得太复杂了,也许第一次卖出是因为考虑到风险比较大了,而第二次买入可能是因为环境有了新变化,所以在高位买进不一定就是错误的,只要能赚钱了就是正确的操作.但是需要注意的是,这个过程中,收益率是递减,而风险是递增的.
    3.4.没耐心去写程序.
      

  8.   

    第二题:
    public class  InOut{
    public static void main(String[] args){
    int n_out=30,
    n_in=40,
    n_allin=0,
    n_allout=0;
    for(int i=1;i<=10000;i++){
    n_allin=n_allin+n_in-n_out;
    n_out=n_out+10;
    n_in=n_in+10;
    n_allout=n_allout+10;
    }
    System.out.println("总收入:"+n_allin);
    System.out.println("总支出:"+n_allout);  
    }
    }
    结果:
    总收入:100000
    总支出:100000
      

  9.   

    题2:要赢利.每笔都要赚10元.只是说投资大了点.每笔都要多投10元.当然这样下去以后肯定是赚钱的
    public class  Test{
    public static void main(String[] args){
    int mairu=30,
    maichu=40,
    deidao=0,
    zhichu=0;
    for(int i=1;i<=10000;i++){
    deidao=deidao+maichu-mairu;
                                mairu=maichu+10;
    maichu=mairu+10;
    zhichu=mairu+10;
                               

    }
    System.out.println("总收入:"+deidao);
    System.out.println("总支出:"+zhichu);  
    }
    }结果:
    总收入:100000
    总支出:200040拿200040来投资.会赚100000.现资产=200040+100000 因为这样下去。终结有一样货比你上次卖出的多值10元.手中的这个价值也要算上