美团网 笔试

都是大题,有些智力题,基本是都挺基础的

1 n条直线最多将平面分成多少个区域

记得初中还是小学就有这种提了

1条 分2个

2条 4

3     7

4     11

规律 f(n) = n+f(n-1)

再累加起来就是f(n)= (1+n)*n/2 +1

2 翻硬币

有100个硬币,开始正面朝下,第一次把所有的都变向,第二次把2的倍数变向,第三次3的倍数,以此类推,进行100,问朝上的有多少个

和开关灯的那个题是一样的,就是考察一个数有多少个因子,这里就是找因子个数为奇数,为奇数时才会正面朝上,只有完全平方数才有奇数个因子,于是只有十个

和质因子没什么关系。

3 给出两个数的异或与和两个值能否唯一确定那两个数是多少

因为异或与和中两个操作数都满足交换律,举个最简单的例子,一个是0,一个是1,异或等于1,和也等于1,这样无法确定哪个是0,哪个是1

4 给出二叉树的后续遍历和中序遍历求先序 比较简单

5 若干个字符求全排列 ,字符中可能有重复

用递归就可以,只是在交换字母是判断是否两个字符相同,同则跳过

#include<iostream>
using namespace std;
#include<assert.h>

void Permutation(char* pStr, char* pBegin)
{
	assert(pStr && pBegin);

	if(*pBegin == '\0')
		printf("%s\n",pStr);
	else
	{
		for(char* pCh = pBegin; *pCh != '\0'; pCh++)
		{        if(*pBegin == *pCh) continue;//如果相同则不交换,进行下一轮交换
			swap(*pBegin,*pCh);
			Permutation(pStr, pBegin+1);
			swap(*pBegin,*pCh);
		}
	}
}
6 括号匹配问题,还要求把注释中的,光考虑注释了,字符串忘了
http://blog.youkuaiyun.com/zhaopeng2511/article/details/6740479
只有括号匹配,没有去掉注释、字符串中的
我的做法是设置标志位,如果出现注释标志/*,设置标志位为true也就是里边的括号不要统计,当出现 */标志位为false继续统计,引号也类似,只是可能出现转义的情况,在引号中,如果出现/"这样的组合忽略,操作起来也不是很复杂。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值