LoveSi

自处超然,处人蔼然,无事澄然,遇事斩然,得意淡然,失意泰然

常用链接

统计

最新评论

淘宝笔试

1.如果n为偶数,则将它除以2,如果n为奇数,则将它加1或者减1。问对于一个给定的n,怎样才能用最少的步骤将它变到1。
例如 n= 61
n-- 60
n/2 30
n/2 15
n++ 16
n/2 8
n/2 4
n/2 2
n/2 1

参照网上的讨论,这道题的意思其实是看最后两位的二进制数:AB。如果B为偶数,则直接/ 2,如果B为奇数,则看A的值,若A为1,则该值+1,若为0,则该值-1。
#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    
int n;
    cin
>>n;
    
int count = 0;
    
while( n > 1)
    
{
        
if( n%2 == 0)
            n 
/= 2;
        
else if( n == 3)
            n
--;
        
else
            n 
+= (n % 4 - 2);
        count
++;
    }


    cout
<<"times:"<<count<<endl;
    
return 0;
}


2.编一个有3个线程的程序,由Main主线程进入,生产者线程产生一个随机的整数。这个整数存在List中,再由消费者线程读取List数据,并显示。
3.列举3种你最喜欢的语言(Java/c++)框架,它们的特点和你喜欢的原因。
4.前缀表达式和后缀表达式的问题。
   35,15,+,80,70,-,*,20,/               //后缀表达方式
   (((35+15)*(80-70))/20)=25           //中缀表达方式  
   /,*,+,35,15,-,80,70, 20             //前缀表达方式

人们习惯的运算方式是中缀表达式。而碰到前缀,后缀方式。。迷茫。其实仅仅是一种表达式子的方式而已(不被你习惯的方式),我这里教你一种也许你老师都没跟你讲的简单转换方式。一个中缀式到其他式子的转换方法~~这里我给出一个中缀表达式~           a+b*c-(d+e)
第一步:按照运算符的优先级对所有的运算单位加括号~
                 式子变成拉:((a+(b*c))-(d+e))
第二步:转换前缀与后缀表达式
        前缀:把运算符号移动到对应的括号前面
                 则变成拉:-( +(a *(bc)) +(de))
                 把括号去掉:-+a*bc+de  前缀式子出现
        后缀:把运算符号移动到对应的括号后面
              则变成拉:((a(bc)* )- (de)+ )-
              把括号去掉:abc*+de+-  后缀式子出现
发现没有,前缀式,后缀式是不需要用括号来进行优先级的确定的。
后天晚上会有笔试,我会把最新的发上来~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2011年的笔试
1前面的选择题记不清了.就上c++的答题吧?
2.不用sizeof,计算int的字节数
3.MAC地址字符串XX:XX:~~~最后改成XX-XX-XX-XX的标准形式
4.色子问题:有一枚筛子,每个面都有一个数字:1~6。很显然,你会倾向于认为这6个面出现的概率是相等的,也就是,你倾向认为:P(x1)=P(x2)=…=P(x6)=1/6其中,P(xi)表示出现数字xi的概率。
假如,我告诉你,这枚筛子与其它筛子不同,似乎,他很容易滚到4或者5这个面,所以这个筛子滚了好多次以后,它出现的平均值是4.5。这个时候,你会怎样分配P(x1)~P(x6)的概率呢?



 

posted on 2010-10-10 16:28 LoveSi 阅读(2115) 评论(1)  编辑 收藏 引用 所属分类: 面/笔试

评论

# re: 淘宝笔试 2010-10-11 14:56 xiao xu

第一题遇到奇数的时候, 为什么不能用递归分别算出+1和-1的最优解呢?  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理