天天看點

兩個數組a[N],b[N],其中A[N]的各個元素值已知,現給b[i]指派,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];

轉自:http://blog.csdn.net/shandianling/article/details/8785269

問題描述:兩個數組a[N],b[N],其中A[N]的各個元素值已知,現給b[i]指派,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];

要求:

1.不準用除法運算

2.除了循環計數值,a[N],b[N]外,不準再用其他任何變量(包括局部變量,全局變量等)

3.滿足時間複雜度O(n),空間複雜度O(1)

兩個數組a[N],b[N],其中A[N]的各個元素值已知,現給b[i]指派,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];
兩個數組a[N],b[N],其中A[N]的各個元素值已知,現給b[i]指派,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];

#include <stdio.h>  

#include <stdlib.h>  

void pr_arr(int *s,char len)  

{  

    while(len--)  

    {  

        printf("%d \n",*s++);  

    }  

}  

int main()  

   int a[]={2,3,7,23,6,5,1,23,89,23};  

    int *b=(int*)malloc(sizeof(a));  

    b[0]=1;  

    int len=sizeof(a)/sizeof(*a);  

    int j,i;  

    for( i=1;i<len;i++)  

        b[i]=b[i-1]*a[i-1];  

    for(j=len-2;j>=1;j--)  

        b[0]*=a[j+1];  

        b[j]*=b[0];  

    b[0]*=a[1];  

    pr_arr(b,len);  

    return 0;  

本文轉自夏雪冬日部落格園部落格,原文連結:http://www.cnblogs.com/heyonggang/p/3171558.html,如需轉載請自行聯系原作者

繼續閱讀