C語言乘積陣列難題?
陣列是包含相同資料型別元素的容器。乘積陣列難題中,查詢所有元素的乘積。
在這個乘積陣列難題中,我們需要找出陣列中除元素外的所有元素的乘積。條件是你不能使用除法運算子,並且將其儲存到另一個數組中。
為了解決這個問題,我們將建立兩個乘積,一個用於所有左元素,另一個用於所有右元素。然後新增這個左乘積和右乘積以獲得所需的乘積。
示例
#include<stdio.h> #include<stdlib.h> void productfind(int arr[], int n) { int *left = (int *)malloc(sizeof(int)*n); int *right = (int *)malloc(sizeof(int)*n); int *prod = (int *)malloc(sizeof(int)*n); int i, j; left[0] = 1; right[n-1] = 1; for(i = 1; i < n; i++) left[i] = arr[i-1]*left[i-1]; for(j = n-2; j >=0; j--) right[j] = arr[j+1]*right[j+1]; for (i = 0; i < n; i++) prod[i] = left[i] * right[i]; for (i = 0; i < n; i++) printf("%d ", prod[i]); return; } int main() { int arr[] = {10, 3, 5, 6, 2}; printf("The array is :
"); int n = sizeof(arr)/sizeof(arr[0]); for(int i = 0;i < n; i++){ printf("%d ",arr[i]); } printf("The product array is:
"); productfind(arr, n); }
輸出
The array is : 10 3 5 6 2 The product array is: 180 600 360 300 900
廣告