我有一个小任务,我不能管理来完成。
*目标,你最近被分配到分析和监督的一个新的游乐园的中心。你的任务是估计每天什么收益将是每个乘坐的那一天。你可以通过看过山车开始。
规则您发现人们喜欢过山车,以至于只要他们已经完成了一搭,便不禁回一个又一个。人们在吸引它们可以是单独或一组前排队。当基团是在队列中,它们不一定要一起骑,而不被分离。人们从来没有在队列中你追我赶。当没有在吸引足够的空间在队列中的下一组,骑启动(所以它并不总是充满)。只要搭结束后,出来的群体,重新回到以相同的顺序排队。*
var limited_number_of_seats_per_ride = 3, //L
limited_number_of_turns_per_ride = 3, //C
limited_number_of_groups_in_queue = 4, //N
number_of_person_per_group = [3,1,1,2]; //P
function earning_per_day(P,L,C,price){
/**
*
* @P {array} number of person per group.
* @L {int} limited number of seats per ride.
* @C {int} limited number of times the ride goes per day.
* @price {int} price per person per ride.
*
* @daily_earning {int} estimated daily earnings.
*/
var daily_earning = 0;
var total_per_ride = 0;
// calculates sum of the earning for each ride per day
for (var j = 0; j < C; j++) {
total_per_ride = 0;
position_i = 0;
// calculates the number of person on each ride
for (var i = position_i; i < P.length; i++){
while((total_per_ride + P[i+1]) < L){
total_per_ride += P[i];
console.log(i + ' total_per_ride = ' + total_per_ride);
}
position_i = i;
console.log('position_i = ' + position_i);
}
daily_earning += total_per_ride;
console.log('daily_earning ' + daily_earning);
}
}
// calling
earning_per_day(number_of_person_per_group, limited_number_of_seats_per_ride, limited_number_of_turns_per_ride, 1);
这是我到目前为止所。但是,我有一个想法,我无法管理到位。由于规则规定,“人们喜欢过山车,以至于只要他们已经完成了一搭,便不禁回一个又一个”。我想保存在它结束的那一刻循环的位置,并重新启动,准确的同一位置的循环。避免我推和元素转移到阵列的最后一个位置。
有人可以给我如何进行提示吗?
非常感谢你 !
瑞安
我已经更新一点你的逻辑。
在过去的P
不断循环我已经使用增量指标position_i
为position_i = (position_i + 1) % P.length;
。
没有必要对内部for (var i = position_i; i < P.length; i++){
。刚刚更新while(){...}
。
var limited_number_of_seats_per_ride = 3, //L
limited_number_of_turns_per_ride = 3, //C
limited_number_of_groups_in_queue = 4, //N
number_of_person_per_group = [3, 1, 1, 2]; //P
function earning_per_day(P, L, C, price) {
/**
*
* @P {array} number of person per group.
* @L {int} limited number of seats per ride.
* @C {int} limited number of times the ride goes per day.
* @price {int} price per person per ride.
*
* @daily_earning {int} estimated daily earnings.
*/
var daily_earning = 0;
var position_i = 0;
console.log('---daily_earning : ' + daily_earning + '---');
// calculates sum of the earning for each ride per day
for (var j = 0; j < C; j++) {
console.log('---Ride ' + (j + 1) + '---');
var total_per_ride = 0;
// calculates the number of person on each ride
// for (var i = position_i; i < P.length; i++){
while ((total_per_ride + P[position_i]) <= L) {
total_per_ride += P[position_i];
position_i = (position_i + 1) % P.length;
}
console.log('total_per_ride = ' + total_per_ride);
console.log('New Start position_i = ' + position_i);
// }
daily_earning += total_per_ride;
console.log('daily_earning ' + daily_earning);
}
}
// calling
earning_per_day(number_of_person_per_group, limited_number_of_seats_per_ride, limited_number_of_turns_per_ride, 1);