分而治之乘法问题 c++



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

+关于乘法数组,这个数组的元素是x到1 2的常数。n 具有相同的大小。 A1 和 B1 为默认值零。

+ı 在 Python 中轻松编写相同的代码,但 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, arr2, a1+ size/2 , b1+ size/2 , size/2) ;
int* D0E1 = Mult2(arr1, arr2, a1, b1+size/2, size/2);
int* D1E0 = Mult2(arr1, arr2, a1+size/2 , b1, size/2);
R += D0E1 + D1E0;
return R;
}
错误:类型"int*">

和"int*"的操作数无效到二进制"运算符+" R += D0E1 + D1E0;

> ı 不能添加两个指针。

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, arr2, a1+ size/2 , b1+ size/2 , size/2) ;
int* D0E1 = Mult2(arr1, arr2, a1, b1+size/2, size/2);
int* D1E0 = Mult2(arr1, arr2, a1+size/2 , b1, size/2);
for( int i = 0; i < size ; i++)
{
R[i] = D0E1[i] + D1E0[i];
}
return R;
}

最新更新