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]
等。我该怎么做?
答案 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
}