去哪儿笔试羊生羊问题
题目:
最开始有1只母羊,母羊在固定的N0,N1,N2....Ni年生1只母羊,母羊在p年死去,如果p=Ni,则先生羊,再死去,计算m年后还有多少只羊。
输入示例:
2 4(母羊在第2年和第4年生产)
5(母羊在第5年死去)
10(10年后还有多少只羊)
输出示例:
47
解题思路:将羊存入数组,数组项的值就是羊的年龄,通过遍历数组来判断每只羊是否生产,是否死亡,最后输出数组长度既m年后羊的总数。
JavaScript
var string = prompt();
var p = parseInt(prompt());
var year = parseInt(prompt());
var Ni = new Array();
Ni = string.split(' ');
for (var i = 0; i < Ni.length; i++) {
Ni[i] = parseInt(Ni[i]);
}
var Sheep = new Array();
Sheep[0] = 0;
for (var i = 1; i <= year; i++) {
length = Sheep.length;
for (var j = 0; j < length; j++) {
Sheep[j]++;
if (Ni.indexOf(Sheep[j]) != -1) {
Sheep.push(1);
}
if (Sheep[j] == p) {
Sheep.splice(j, 1);
length--;
j--;
}
}
}
console.log(Sheep.length);
总结:题不是很难,但是最开始做的时候想的太复杂了,想的是用对象来存储每只羊的属性,然后再把对象存入数组,通过遍历数组来对每只羊的属性进行修改,发现太麻烦,而且会占用不必要的内存。最后简化到一个简单的一维数组就能解决,不过要注意数组不断变化过程中下标和数组长度都在变化。