由于思路和参考思路一致,故就不写了,把代码加这,分析见:http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5ODIzNDQ3Mw==&appmsgid=10000037&itemidx=1&sign=a99da073061ff744958d1a2084cc1d6f
#include <stdio.h> #include <stdlib.h> #include <string.h> void calculate(int* A ,int* B ,int n ) { int i =0; int* C = (int*)malloc( n * sizeof(int)); int* D = (int*)malloc( n * sizeof(int)); memset( (char*) C, 0, n*sizeof(int)); memset( (char*) D, 0, n*sizeof(int)); for(i=0;i<n;i++) { if(i == 0) { C[i] = 1; D[i] = 1; } else { C[i] = C[i-1] * A[i-1]; D[i] = D[i-1] * A[n-i]; } } for(i=0;i<n;i++) { B[i] = C[i] * D[n-i-1]; } free(C); free(D); } //测试代码 int main() { int A[10]; int B[10]; int j; for(j=0;j<10;j++) { A[j] = j+1; B[j] = 0; } calculate( A , B, 10 ); for(j =0;j<10;j++) { printf("第 %d 个数是 %d \n",j+1,B[j]); } return 0; }