如何找到模式?

时间:2016-09-26 06:12:14

标签: c++ math mathematical-optimization discrete-mathematics

Array = [1 3 6];

我们可以分成称为片段的连续片段,并将它们存储为另一个阵列B:

B=[(1),(3),(6)]; B=1*1+3*1+6*1=10; 
B=[(1,3),6]; B=(1+3)*2+6*1=14;
B=[(1,(3,6)]; B=1*1+(3+6)*2=19;  
B=[(1,3,6)];  B=(1+3+6)*3=30; 

当我们总结所有结果时,我们得到10+14+19+30=73。这是Array = [1,3,6]的最终结果。我希望找到任何数组大小的模式。

可以是array[1,2,3,4,5,6]array[1,5,6,7]array[5,777,88,11,22]等。我该怎么做?

1 个答案:

答案 0 :(得分:0)

要对此进行编码,您可能需要一个递归解决方案。像

这样的东西
int solve(int[] data) {
    int len = data.length;
    if(len ==1 ) return data[0];

    // for the full sequence (1,2,3,4,5) its just he length times 
    // the sum
    int res = sum(data) * len;

    // now consider partitions
    for(int i=0;i<len-1;++i) {
        res += solve(data[0 .. i] )
        res += solve(data[i+1 .. len-1])
    }
    return res
}