任何人都可以为我提供IPL ZCO 2014的伪代码吗?

时间:2016-10-15 14:42:04

标签: javascript algorithm math data-structures

以下是链接:https://www.codechef.com/ZCOPRAC/problems/ZCO14004。 我可以通过代码递归执行:

  ans=answer(array[],0,0,0);
  function answer(tokens[], j, ans,n){
if(n==0||i>=tokens.length){
return 0;
   }
int k=ans+=tokens[i];
if(max<(k)){
    max=k;
}

ans(tokens,i+1,ans,n-1);
ans(tokens,i+2,ans,2);

return max;
}

但这需要花费大量时间进行大量投入。请告诉我应该在哪里记下代码。谢谢

1 个答案:

答案 0 :(得分:1)

据我所知,线性方法可以用非常简单的方式实现。 对于每个游戏,我们有三种可能的最佳收益:

  • 还有两场可以玩的比赛
  • 还有一个可以玩的游戏
  • 强制暂停

因此,只需跟踪这三个变量就可以了,只需用简单的数学运算来处理循环。

&#13;
&#13;
var input = [3, 2, 3, 2, 3, 5, 1, 3];

var sum2 = 0; // best case with two more games allowed
var sum1 = 0; // best case with one more game allowed
var sum0 = 0; // best case with no more game allowed

for (var i = 0; i < input.length; i++) {
  var best = Math.max(sum0, sum1, sum2);
  sum0 = sum1 + input[i];
  sum1 = sum2 + input[i];
  sum2 = best;
}

document.write(Math.max(sum0, sum1, sum2));
&#13;
&#13;
&#13;