#待字闺中#面试题--颠倒乾坤

由于思路和参考思路一致,故就不写了,把代码加这,分析见: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;
}

 

posted @ 2013-07-05 21:21  rcgn  阅读(337)  评论(0编辑  收藏  举报