Topcoder_153

来源:互联网 发布:木结构建筑优缺点知乎 编辑:程序博客网 时间:2024/06/07 00:01
 【问题描述】
    给定一个整数序列s[0],s[1],..,s[n],通过计算它的差序列,即 s[1]-s[0], s[2]-s[1], ..., s[n]-s[n-1],我们得到第二个序列,该序列的整数个数比原始序列个数少一个。在新得到的序列上不断的重复以上的计算,直到我们得到的序列的整数个数是1为止。
    例如:
原始序列:         5    -4    12     23
第一次计算后      -9    16    11
第二次计算后          25    -5
第三次计算后             -30
    我们现在的目的是预测原始序列的下一个整数,使得按照以上计算方式最终得到的差序列的整数是0。比如上面的例子如果在23后的数字是-1,那么经过第三次计算后的序列为-30和-30,再进行第四次计算最终得到的整数就是0。具体的算法可以是倒推计算,即先确定第三次计算的序列上应该填入什么整数,再计算第二次的等等,直到计算得到原始序列需要添加的整数。

  定义:
类  DifDif
方法  public int predict(int[] seq)

  约束:
1、原始序列由1至10个元素构成;
2、每个元素的在-1000至1000之间。

  测试用例:
1、{5,-4, 12, 23}  Returns: -1
2、{100}   Returns: 100
3、{1,4,9,16,25,36}   Returns: 49
4、{-1000,1000,-1000,1000,-1000,1000,-1000,1000,-1000,1000}   Returns: 1023000
  1. public class DifDif {
  2.     public int predict(int[] seq) {
  3.         int len = seq.length;
  4.         int sum = 0;
  5.         for (int i = 0; i < len; i++) {
  6.             for (int k = 1; k < len - i; k++)
  7.                 seq[k-1] = seq[k] - seq[k-1];
  8.         }
  9.         for (int i = 0; i < len; i++)
  10.             sum += seq[i];
  11.         return sum;
  12.     }
  13. }

原创粉丝点击