存档

2013年5月 的存档

再谈数字序列和为0

2013年5月8日 4 条评论

---

之前研究过一道微策略的笔试题-数字序列和为零,当时采用DFS做的,深感别扭,后来在Tutu_Lux的帮助下,得到一个不错的方案,思路简单,说白了就是暴搜,但实现巧妙,代码灰常漂亮。感谢Tutu_Lux

先说一下大致思路,然后贴代码,之后分析代码中的各个函数,实现充分展现了Tutu_Lux扎实的基本功和灵动的脑瓜子,哈,:-) 。

思路:

  1. 由于N是从3至9的范围,解决方案就是针对每个N的取值,先计算三个分隔符“_ + -”填入序列1-N的所有可能组合的情况总数
  2. 设置所有情况的组合序列(采用3进制的思想,即set函数)
  3. 对每种组合计算表达式值,如果为0则输出(利用栈&状态机,calculate函数)

代码如下:

阅读全文...

IP地址字符串转无符号整型uint—自动机思想【小米、腾讯面试题】

2013年5月6日 4 条评论

---

题:写一个把字符串的IP地址变成32位整数的函数,要求考察程序健壮性。

这个很能考察眼高手低的问题;如果考虑程序健壮性,有很多的非法情况需要考虑,稍有不慎就会有欠考虑的情况;如不考虑非法情况,转换的过程无非就是分解整数,合并这两步;只需两句代码就可以搞定,如下:


sscanf(ipstr, "%d.%d.%d.%d", &a, &b, &c, &d);

return (a<<24)|(b<<16)|(c<<8)|d;

但是考虑程序健壮性就没这么简单了,不过核心思想也就是上面的两句话,下面将各种错误情况定义成状态表,程序如下:

阅读全文...

必应词典新应用改进建议

2013年5月3日 4 条评论

---

首先感谢编程之美全国挑战赛在之前的活动中给予的最佳博客奖,这里对必应词典新出的两个应用(必应电台&单词挑战)的使用体验简单描述下:

必应电台

1. 个人建议“听写”这个功能可以砍掉了,有点凑功能的嫌隙。首先,在如此快的播放速度下,用键盘跟着语速敲出来难度太大,仔细考虑下,这个功能的实用性真心不大;其次,已经提供了原文参考,这跟提交对比没啥区别;再者“返回听写”这个按钮也是冗余的,其功能也就是上面的播放开关的“开”的功能。

2. 除了CRI的内容,可否有更多一些收听选择?

3. 点击了左侧的收听列表,电台就自动从节目单的第一条开始播放,个人觉得没必要;要播放哪个,用户自己来选择就好,省的用户还没反应过来,已经播放一大块了,即使要收听最新的内容也还是要重新点击从头播放。

4.关于推广,我搜索了CRI每日新闻,发现有下载CRI音频的需求,但是他们未必知道bing的这个应用,其实bing很多东西做的挺好的,就是感觉缺少一些推广,个人感觉必应词典客户端界面下面的广告较烦人,倒不如换成“体验必应英文电台,下载CRI音频”这样类似的文字,为自己的应用产品做一些推广,而不是做其他的广告。

阅读全文...

UNIX环境高级编程学习笔记(中)

2013年5月1日 没有评论

---

此文作者:冰镇南瓜汁;mail:munantv@qq.com

进程环境

常用函数:

<unistd.h>

void _exit(int status);

<stdlib.h>


void exit(int status);
void _Exit(int status);

正常终止程序,_Exit和_exit立即进入内核,exit要先执行清理工作(包括关闭所有打开的流,以及调用终止处理程序)。

int atexit(void (*func)(void));

登记终止处理函数,这些函数会被exit自动调用,调用的顺序与登记的顺序相反,登记多次会导致调用多次。成功返回0,出错返回非0值。


void *malloc(size_t size);
void *calloc(size_t nobj, size_t size);
void *realloc(void *ptr, size_t newsize);
void free(void *ptr);

malloc(memory allocation)分配指定字节数的存储区,初始值不定。calloc为指定大小指定个数的元素分配存储区,每一个位置都初始化为0。realloc更改以前分配区的长度。free释放ptr指向的存储空间。

阅读全文...