长度为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 }