1. 程式人生 > >陣列乘積--陣列中除第i個外的所有其他陣列元素的乘積

陣列乘積--陣列中除第i個外的所有其他陣列元素的乘積

 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 int
i; 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 }
複製程式碼