读书人

腾讯公司的面试题看看哪位高手能做出来

发布时间: 2012-03-17 19:06:28 作者: rapoo

腾讯公司的面试题看看谁能做出来,我做的不好!
用户将输入如下格式的电话本记录:
0101001张三13888888888
0101002李四13777777777
0102001王五13666666666

其中,0101001代表编号,1/2位为公司编号,3/4位为部门编号,5/6/7位为联系人编号
试写出C++代码导入并存储上述电话本记录,并支持按照公司/部门/联系人查询。要求自定义数据结构存储,不得使用任何数据库。


还有一道


试题描述:
用户一个算式,算式允许包括+-*/()和任意个数的十进制数字(整数或者小数),该算式为一次性输入。要求计算出算式的结果或者提示异常算式,并且将正确结果用十进制/五进制两种方式显示出来。其中,五进制数采取以下的格式显示:
(a1 a2a3a4a5a6a7a8a9a10 a11a12a13a14a15a16)
a1为符号位,0代表正数,1代表负数
a2-a10为整数部分,十进制数的整数部分为:
a2*(5^8)+a3*(5^7)+…+a9*(5^1)+a10*(5^0)
a11-a16为小数部分,十进制数N的小数部分应该约等于(尽量精确):
a11*(5^-1)+a12*(5^-2)+…+a16^(5^-6)
例如,十进制数N=-136.56显示为五进制数(1 000001021 240000)

代码要求:
用Visual C++建立Win32工程完成,不使用MFC,并且不得使用任何额外DLL/LIB完成上述代码。输入/输出界面任意。提供源代码。

[解决办法]
第一题用map应该就几乎没代码量了。
第二题,常规做法是用栈来进行表达式分析。加用正则可以简化提取数字/运算符/5进制数字的工作量。
使用boost::spirit,用BNF文法分析,比较cool了些。哈哈,就是掌握了这个库的人不多,我也就是心向之而已。
[解决办法]
变相要程序。。。
[解决办法]
第一题数据结构可以用MULTIMAP,可以使用BOOST::TUPLE 把记录存储在MULTIMAP里面
第二题TAODM说的方法应该不错
[解决办法]
1) 如果不是海量数据 rbtree , 海量数据 b+ , 无难度 ...
2) hello yacc world 问题, 零难度 ..


[解决办法]
用map 怎么行哦 我不知道taodm是怎么想的 我正在想 呵呵

读书人网 >C++

热点推荐