您的位置:首页 > 其它

子数组的最大乘积

2012-08-09 14:30 211 查看
长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合成绩最大的一组,并写出时间复杂度

#include <iostream>
#include <cstdio>
#include <ctime>
#include <cstdlib>

using namespace std;

void randomGen(int *array, int size)
{
srand(time(NULL));

for(int i=0; i<size; i++)
{
array[i] = rand()%size + 1;
}
}

int main()
{
int size=10;
int arr[size];
int s[size], t[size];

randomGen(arr, size);
s[0]=1;
for(int i=1; i<size; i++)
{
s[i] = s[i-1] * arr[i-1];
}
t[size-1]=1;
for(int i=size-2; i>=0; i--)
{
t[i] = t[i+1] * arr[i+1];
}
printf("prefix method:\n");
for(int i=0; i<size; i++)
{
printf("%d ", s[i]*t[i]);
}
printf("\ndivide method:\n");
int multiSum=1;
for(int i=0; i<size; i++)
{
multiSum *= arr[i];
}
for(int i=0; i<size; i++)
{
printf("%d ", multiSum/arr[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: