子数组的最大乘积

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

 1 #include <iostream>

 2 #include <cstdio>

 3 #include <ctime>

 4 #include <cstdlib>

 5 

 6 using namespace std;

 7 

 8 void randomGen(int *array, int size)

 9 {

10     srand(time(NULL));

11 

12     for(int i=0; i<size; i++)

13     {

14         array[i] = rand()%size + 1;

15     }

16 }

17 

18 int main()

19 {

20     int size=10;

21     int arr[size];

22     int s[size], t[size];

23 

24     randomGen(arr, size);

25     s[0]=1;

26     for(int i=1; i<size; i++)

27     {

28         s[i] = s[i-1] * arr[i-1];

29     }

30     t[size-1]=1;

31     for(int i=size-2; i>=0; i--)

32     {

33         t[i] = t[i+1] * arr[i+1];

34     }

35     printf("prefix method:\n");

36     for(int i=0; i<size; i++)

37     {

38         printf("%d ", s[i]*t[i]);

39     }

40     printf("\ndivide method:\n");

41     int multiSum=1;

42     for(int i=0; i<size; i++)

43     {

44         multiSum *= arr[i];

45     }

46     for(int i=0; i<size; i++)

47     {

48         printf("%d ", multiSum/arr[i]);

49     }

50     return 0;

51 }

你可能感兴趣的:(数组)