去哪儿笔试羊生羊问题

题目:
最开始有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);

总结:题不是很难,但是最开始做的时候想的太复杂了,想的是用对象来存储每只羊的属性,然后再把对象存入数组,通过遍历数组来对每只羊的属性进行修改,发现太麻烦,而且会占用不必要的内存。最后简化到一个简单的一维数组就能解决,不过要注意数组不断变化过程中下标和数组长度都在变化。

原文地址:https://www.cnblogs.com/tanwm/p/7577249.html