分治法乘法问题C ++

我刚开始使用c ++,并且在算法课程中有一个伪代码,并且ı已尝试将其转换为c ++,但ı失败了如何转换c ++的任何线索都对我有所帮助。

+关于乘法数组,该数组的元素是x到1 2 .... n的常数,且大小相同。 a1和b1默认为零。

+ı很容易在python中编写相同的代码,但是c ++ı不知道如何打破类型安全规则。

#standardSQL
SELECT a,ARRAY(
    SELECT AS STRUCT b,c FROM t.x GROUP BY b,c
  ) AS x,y
FROM (
  SELECT a,ARRAY_AGG(STRUCT(b,c)) AS x,ARRAY_AGG(DISTINCT d) AS y
  FROM `project.dataset.table`
  GROUP BY a
) t

错误:二进制“ operator +”类型为“ int *”和“ int *”的无效操作数 R + = D0E1 + D1E0;

mengfanxiang123 回答:分治法乘法问题C ++

ı无法添加两个指针。

int* Mult2(int arr1[],int arr2[],int a1,int b1,int size)
{
    int* R = new int[ 2* size - 1];
        if ( size == 1 )
    {
        R[0] = arr1[a1] + arr2 [b1];
        return R;
    } 
    R = Mult2(arr1,arr2,a1,b1,size/2);
    R = Mult2(arr1,a1+ size/2,b1+ size/2,size/2) ;

    int* D0E1 = Mult2(arr1,b1+size/2,size/2);
    int* D1E0 = Mult2(arr1,a1+size/2,size/2);
    for( int i = 0; i < size ; i++)
    {
        R[i] = D0E1[i] + D1E0[i];
    }
    return R;
}
本文链接:https://www.f2er.com/2762375.html

大家都在问