9
取所有子集乘积的最快算法
给定n数组中的数字(不能假设它们是整数),我想计算size的所有子集的乘积n-1。 您可以通过将所有数字相乘然后依次除以一个数字(只要这些数字都不为零)来实现。但是,您可以多快完成一次不分割的操作? 如果您不允许除法,那么计算大小为n-1的所有子集的乘积所需的最小算术运算数(例如乘法和加法)是多少? 显然,您可以(n-1)*n乘以乘法。 要澄清的是,输出是n不同的乘积,除了对内存的读写操作外,唯一的操作是乘法,加法和减法。 例 如果输入有三个数字2,3,5,则输出为三个数字15 = 3*5,10 = 2*5和6 = 2*3。 获奖标准 答案应给出其代码将使用的算术运算次数的精确公式n。为了简化生活,我将插入n = 1000您的公式来判断其得分。越低越好。 如果很难为您的代码生成精确的公式,则可以对其运行n = 1000并计算代码中的算术运算。但是,最好使用一个精确的公式。 您应该将自己的分数添加n=1000到答案中以便于比较。