码迷,mamicode.com
首页 > 编程语言 > 详细

构建乘积数组

时间:2017-09-18 22:18:35      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:cto   read   nbsp   tip   class   没有   长度   pac   multi   

#include<stdio.h>
#include<string.h>
#include <pthread.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#include <stdlib.h>
#include <sstream>
using namespace std;



class Solution {
public:
      /*
        B[i]可以看做矩阵(A组成的方阵去掉对角线)中每行的乘积
        下三角用连乘可以很容易求得,上三角,从下往上也是连乘
        因此思路是先计算下三角中的连乘,即计算B[i]中的一部分,
        然后倒过来按上三角中的分布规律,把另一部分也乘进去
        */
    vector<int> multiply(const vector<int>& A) {
        int length=A.size();
        vector<int>B(length);//初始化数组B时没有确定长度报错了额
        if(length!=0){
            B[0]=1;
            for(int i=1;i<length;i++){
                B[i]=B[i-1]*A[i-1];
            }
            int temp=1;
            for(int j=length-2;j>=0;j--){
                temp*=A[j+1];
                B[j]*=temp;
            }
        }
        return B;
    }
};

int main()
{
    Solution s;
    vector<int> A = { 0,1,1,1,1,1,1,1,1,1 };
    vector<int> B=s.multiply(A);
    for(size_t i=0;i<A.size();i++)
        cout<<B[i]<<" ";
    cout<<endl;
    return 0;

}

构建乘积数组

标签:cto   read   nbsp   tip   class   没有   长度   pac   multi   

原文地址:http://www.cnblogs.com/bananaa/p/7545027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!