陣列乘積--陣列中除第i個外的所有其他陣列元素的乘積
阿新 • • 發佈:2019-02-09
1 /* 2 * 一個長度為n的整數陣列result,滿足result[i]=除input[i]之外所有數的乘積(不溢位),比如 3 * 輸入input={2,3,4,5};輸出 result={60,40,30,24}; 4 */ 5 /* 6 * 方法一:判斷有0的情況,如果有0則其他都為0.如果沒0,可使用先求全部乘積,再除以自身。 7 * 方法二:先儲存i位置前的乘積到result[i],再用一變數儲存i位置後的乘積,結果相乘,即可。 8 */ 9 #include <stdio.h> 10 //#include <stdlib.h>11 void pr_arr(int arr[],int n) 12 { 13 int i; 14 for( i=0;i<n;i++) 15 { 16 printf("%d ",arr[i]); 17 } 18 printf("\n"); 19 } 20 21 void arrayMultiply(int input[],int result[],int n)//方法二 22 { 23 if(n<=0) return; 24 result[0]=1; 25 inti; 26 for( i =1;i<n;i++) //從1位置開始,result[i]表示input i位置前的乘積 27 { 28 result[i]=result[i-1]*input[i-1]; 29 } 30 int q=1; 31 for( i=n-2;i>=0;--i) //從倒數第二個開始,q表示input i位置後的乘積 32 { 33 q*=input[i+1]; 34 result[i]*=q; 35 } 36 pr_arr(result,n);37 } 38 int main(void) { 39 int s[]={2,3,4,5,7,8,6}; 40 int n=sizeof(s)/sizeof(int); 41 42 int *result = new int[n]; 43 arrayMultiply(s,result,n); 44 return 0; 45 }