C中的产品数组难题?
数组是具有相同数据类型的元素的容器。在产品数组Puzzle中,找到所有元素的产品。
在此产品数组难题中,我们需要找到除element之外的所有其他元素的乘积。条件是您不能使用除法运算符并将其存储到另一个数组。
为了解决这个问题,我们将创建两个产品,一个用于所有左元素,一个用于所有右元素。然后添加此左右产品以获得所需的产品。
示例
#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 : \n"); int n = sizeof(arr)/sizeof(arr[0]); for(int i = 0;i < n; i++){ printf("%d ",arr[i]); } printf("The product array is: \n"); productfind(arr, n); }
输出结果
The array is : 10 3 5 6 2 The product array is: 180 600 360 300 900