读书人

一路面试题求高人

发布时间: 2013-03-19 17:22:05 作者: rapoo

一道面试题,求高人!
一路面试题,求高人
今天遇到一个面试题
大家帮我解答一下,印证印证。。。

按照一对夫妻生两个个,20岁生子,到100岁这个家庭有多少人
包括下一代的女婿或者儿媳

比如
小明
儿子 女儿
女儿 女婿 儿子 儿媳
………………
100岁的时候家庭多少人。


求代码
一路面试题,求高人
[解决办法]
一路面试题,求高人
理想情况下吗?
不孕不育,天灾人祸算不算
[解决办法]


------解决方案--------------------


double iAge = 0;
for (int i = 0; i < 5; i++)
{
iAge += Math.Pow(2, i);
}
[解决办法]
第0代是1
第一代是2+2
第二代是2+4+4
第三代是2+4+8+8
第n代是2+4+...+2^(n-1)+2*(2^n)
[解决办法]
//n为代数
public static int GetPersonNum(int n)
{
if (n < 1)
return 1;
if (n == 1)
return 4;

return (int)(Math.Pow(2,n)*1.5) + GetPersonNum(n-1);
}

调用
int num=GerPersonNum(100/20);
[解决办法]
这个题目教材上都有,不过原来的题目是繁殖兔子的。给这么一改,变成人以后感觉很雷人!一路面试题,求高人
[解决办法]
num=94
[解决办法]
就这些条件么?那对夫妻就生一次,还是每年都会生,儿媳是20开始生,还是...疑惑多多啊
[解决办法]
这不是兔子吗?

出题的人比较坑爹啊,把人当兔子了。

lz自己google“兔子问题”就知道了
[解决办法]

 int dTotal = 100;
int dInterval = 20;
int iCount = dTotal / dInterval;
double result = 3;
for (int i = 0; i < iCount- 2; i++)
{
result += (Math.Pow(2, i) + Math.Pow(2, i) * 2) * 2;
}


我算的结果是46个
[解决办法]
引用:
引用:我按第一层是两个
第二层是两个
开始算的
第二层是4个了
第三层是4的2次方了。

第一层是最早的两夫妻
第二层不就两孩子? 哪来的四个孩子?
[解决办法]
namespace Test
{
class Program
{


static void Main(string[] args)
{
int total = 1;


int childNum = 0;

for (int i = 1; i <= 100; i++)
{
if (i % 20 == 0)
{
//孩子数
childNum = Convert.ToInt32(Math.Pow(2,i / 20 - 1));

//孩子找老婆/老公,生两个
total = total + childNum + childNum * 2;

Console.WriteLine(string.Format("{0}岁时,家里有{1}个人",i, total));
}
}


Console.ReadKey();

}


}

}



20岁时,家里有4个人
40岁时,家里有10个人
60岁时,家里有22个人
80岁时,家里有46个人
100岁时,家里有94个人
[解决办法]
最后一代请只算直系,不算婚配。
刚出生也能婚配?
[解决办法]
我算的是94人
第0代,2
1, 2 + 2
2, 2 + 2 + 2 + 4
3, 2 + 2 + 2 + 4 + 4 + 8
4, 2 + 2 + 2 + 4 + 4 + 8 + 8 + 16
5, 2 + 2 + 2 + 4 + 4 + 8 + 8 + 16 + 16 + 32
第5代就是100岁的时候。
[解决办法]

看完楼上的发现 基数搞错了
应该20岁的时候家里4个

都是双胞胎?生子 也得有个周期吧


[解决办法]
我觉得结题应该分几个情况,,如果不先说明的话,,,
1,中间会不会有人死
2,生的时候多少是双胞胎(特别是最后100岁,而且这时候是孩子刚出生不可能有对偶)
个人感觉这问题出的比喻不怎么合逻辑。。。
[解决办法]
不对吧!若都是单胎
20岁才有一个,21岁才有第二个
41岁才有一个孙子,42岁有两个孙子,43岁有一个孙子(43岁截止有4个孙子,两个儿女,共计5个吧)
当然一年生两个的话这简单
[解决办法]


[解决办法]
20 2(20)+2(0)
40 2(40)+4(20)+4(0)
60 2(60) + 4(40) + 8(20) + 8(0)
80 2(80) + 4(60) +8(40) +16(20) + 16(0)
100 2(100) + 4(80) + 8(60) + 16(40) + 32(20) + 32(0)
递推规律,20及以上的人个数不变,0岁的人数n1到20岁结婚,变为2n1个20岁的,并且生子2n1个0岁的.

100岁时96人。
[解决办法]
这是一个根节点值为0,其余节点值为1的二叉树吧。
[解决办法]

int num(int year)
{
if(year<20)
{
return 1;
}
return 2+2*num(year - 20);
}

[解决办法]
int num(int year)
{
return year<20?1:2+2*num(year - 20);
}
[解决办法]
从两个人开始生。每次生的都是一男一女,到一百岁他们结婚这年里面同时生子女。我算了一共是94个。
------解决方案--------------------



[解决办法]
如果不考虑亲戚结婚则可以理解为 一个6层的满2叉树+5层满2叉树的节点数
2^6-1 +2^5-1 =94人
具体分析:之所以再加上一个5层树的节点是因为每一代除多两个孩子外还会多一个配偶

当然如果考虑法律可行性(近亲3代不能结婚)假若没有隔代婚姻
所以第四代有 2^(4-1)个孩子(叶子)有近亲结婚可能
所以第五代有 2^(5-1)个孩子(叶子)有近亲结婚可能
如果剩下是都近亲结婚(配偶不增加)则 显然为2^6-1+2^3-1

2^6-1+2^3-1=70与2^6-1 +2^5-1=94之间
其中每近亲一次就少了两个配偶和两个孩子即少了4人
[解决办法]
能活到100岁么
[解决办法]
好复杂,而且不实际啊
[解决办法]
感觉这道题怪怪的,是结婚立马生两个?
[解决办法]
引用:
要不要加上 超生、不孕、不育、在外面和别人再生的因素啊?


这个你就多虑了,这只是考察基本逻辑罢了。
[解决办法]
引用:
有个问题没有搞清楚,20岁生子,那第二个孩子什么时候出生,这个很关键啊!


所见略同,按题意貌似每次都是双胞胎,牛逼了。

读书人网 >C#

热点推荐